[英]nginx video streaming statistics
我正在使用ngx_http_mp4_module从服务器流式传输视频。 我有一台可以被多个域访问的服务器。
我使用以下配置nginx:
location /content/ {
mp4;
mp4_buffer_size 1m;
mp4_max_buffer_size 5m;
}
我将所有视频存储在服务器中的/ content文件夹下,并通过url访问它们: http : //example.com/content/testvideo.mp4
由于我可以访问具有多个域的服务器,因此可以通过访问以下网站观看同一视频
要么
问题是:如何记录观看视频的网址以及多少秒的统计信息?
设置包括$host
和$request_time
变量的日志记录格式。
在该location指令中使用该日志记录格式。
它在Nginx网站上有完整的文档,以及可用于包括在日志中的变量列表,以下变量属于http块,并且是标准combined
日志格式的修改版本,并在上面加上了两个变量:
log_format streaming '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" $host $request_time';
这定义了名称为streaming
的日志格式,变量$host
显然是客户端请求中的主机名。 根据文档, $request_time
是:
以毫秒为单位请求处理时间,以毫秒为单位; 从客户端读取第一个字节到将最后一个字节发送到客户端后的日志写入之间经过的时间
如果您的视频是CBR,则还可以使用$bytes_sent
记录传输到客户端的总数据,并计算以这种方式传输的视频的持续时间。
一旦定义了自定义日志格式,就可以在流的位置块中为该位置的请求设置指令,以使用该格式进行日志记录,如下所示:
access_log /path/to/log/video.log streaming;
这只是写入日志的路径, streaming
是用于此日志的日志格式。
现在,Nginx将创建一个日志文件,其中包含对该位置的所有请求,无论客户端访问的域是什么。
也许您希望每个域使用单独的日志? 没问题,只需将$host
变量用作access_log
指令中路径的一部分
access_log /path/to/log/$host-video.log streaming;
现在,每个域都将拥有自己的日志。 example.com-video.log,example.net-video.log等
也许两者都想要? 没问题,您可以在同一级别内指定多个access_log
指令:
access_log /path/to/log/video.log streaming;
access_log /path/to/log/$host-video.log streaming;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.