一种简单的实现hls流量统计的方法
2017-10-31 20:02
357 查看
一 为什么要流量统计?
很多cdn都是按流量算钱的,当然要统计
二 hls都是短链接,如何统计流量呢?
由于hls是基于http的,而且是短连接,服务端无法知道,哪两次http请求是属于同一个客户端的请求。(有人说通过ip和端口绑定,有的客户端是nat出口,还是变化的ip和端口)
三 简单的统计机制
根据hls的特性,在访问m3u8的时候,使用的url,客户端会保持原样,只是把默认的xx.m3u8替换为m3u8文件里面解析到的ts切片的路径。
比如:http://rtmp.live.com/live/hls/sessionid/stream.m3u8
内容是
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:29886
#EXT-X-TARGETDURATION:00013
#EXTINF:13.388,
20171012/20171012140000/stream_1-20171012141302-29886.ts
#EXTINF:13.330,
20171012/20171012140000/stream_1-20171012141316-29887.ts
。客户端下次下载ts切片的时候的路径将会是 http://rtmp.live.com/live/hls/sessionid/ http://rtmp.live.com/live/hls/sessionid/stream.m3u8
这样一来,实际上sessionid将会永远带过来,这样就有办法统计流量了。
我们在rtmp中配置vhost,通过正则匹配,
location ~ ^/play_with_flow/.*\*.(ts|m3u8)
{
}
实现一个新的http模块,在读取请求带过来的路径的时候,去掉sessionid,这一级子目录,这样就能直接访问到真实的切片文件了。
很多cdn都是按流量算钱的,当然要统计
二 hls都是短链接,如何统计流量呢?
由于hls是基于http的,而且是短连接,服务端无法知道,哪两次http请求是属于同一个客户端的请求。(有人说通过ip和端口绑定,有的客户端是nat出口,还是变化的ip和端口)
三 简单的统计机制
根据hls的特性,在访问m3u8的时候,使用的url,客户端会保持原样,只是把默认的xx.m3u8替换为m3u8文件里面解析到的ts切片的路径。
比如:http://rtmp.live.com/live/hls/sessionid/stream.m3u8
内容是
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:29886
#EXT-X-TARGETDURATION:00013
#EXTINF:13.388,
20171012/20171012140000/stream_1-20171012141302-29886.ts
#EXTINF:13.330,
20171012/20171012140000/stream_1-20171012141316-29887.ts
。客户端下次下载ts切片的时候的路径将会是 http://rtmp.live.com/live/hls/sessionid/ http://rtmp.live.com/live/hls/sessionid/stream.m3u8
这样一来,实际上sessionid将会永远带过来,这样就有办法统计流量了。
我们在rtmp中配置vhost,通过正则匹配,
location ~ ^/play_with_flow/.*\*.(ts|m3u8)
{
}
实现一个新的http模块,在读取请求带过来的路径的时候,去掉sessionid,这一级子目录,这样就能直接访问到真实的切片文件了。
相关文章推荐
- 一种简单的处理大流量访问的方法
- 开源DataGridView扩展(5) 简单实现统计行,有更好的方法吗?
- Linux检测TCP连接断开的一种简单实现方法
- js实现瀑布流的一种简单方法实例分享
- 一种简单实现卡通勾边渲染的方法
- 介绍一种在大循环就可实现的简单多任务编程方法
- js实现瀑布流的一种简单方法实例分享
- 实现对gridview删除行时弹出确认对话框的一种简单方法
- 用js实现瀑布流的一种简单方法
- 多线程中的全局信息统计的一种简单实现方式(java实现)
- C++实现统计从1到n中1出现的次数(另外一种方法)
- 一种简单的struts级连菜单实现方法
- 一种简单方法实现页面导出(Excel)功能 选择自 xieyun1977 的 Blog
- js实现瀑布流的一种简单方法实例分享
- 渐变色(Gradient)窗体——一种简单的实现方法
- 在Asp.Net MVC中实现计算页面执行时间及简单流量统计
- ATL实现Connection Point的一种简单的方法
- 介绍一种在大循环就可实现的简单多任务编程方法
- 一种简单的频率测试方法及Verilog实现
- 一种简单的处理大流量访问的方法