Wireshark分析HLS流
关于HLS的介绍,前面我有专门写一篇博文介绍
HLS媒体流简要
本篇文章介绍如何使用Wireshark分析HLS流,
为了抓包的方便,我们就是在内部的一台机器设置HLS的媒体流服务器,关于如何假设HLS服务器,前面也有介绍:
利用nginx-rtmp-module搭建HLS流媒体服务器然后在另外一台服务器使用vlc或者ffplay客户端访问HLS流,然后Wireshark就可以抓取对应的包,因为我们确定知道我们服务器的地址,所以可以使用下面的过滤器过滤客户端机器和服务器之间的数据流
ip.addr == xxx.xxx.xxx.xxxx
把xxx.xxx.xxx.xxx换成你自己的服务器的ip即可。
抓到所有的traffic,可以分为2类,
- 获取m3u8文件的http
- 下载ts流文件
如果看到protocol那一栏有http,点击任何一个packet,然后右键单击,选择"Follow TCP"
会弹出对话框显示所有这个流的数据:
GET /hls/mystream.m3u8 HTTP/1.1
User-Agent: Lavf/56.40.101
Accept: */*
Range: bytes=0-
Connection: close
Host: 172.28.2.85:8080
Icy-MetaData: 1
HTTP/1.1 206 Partial Content
Server: nginx/1.8.0
Date: Fri, 21 Aug 2015 07:40:50 GMT
Content-Type: application/vnd.apple.mpegurl
Content-Length: 254
Last-Modified: Fri, 21 Aug 2015 07:40:44 GMT
Connection: close
ETag: "55d6d5fc-fe"
Expires: Fri, 21 Aug 2015 07:40:49 GMT
Cache-Control: no-cache
Content-Range: bytes 0-253/254
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:17
#EXT-X-TARGETDURATION:7
#EXTINF:5.673,
mystream-17.ts
#EXTINF:6.840,
mystream-18.ts
#EXTINF:6.640,
mystream-19.ts
#EXTINF:5.238,
mystream-20.ts
#EXTINF:6.707,
mystream-21.ts
#EXTINF:5.906,
mystream-22.ts
可以看到发了一个http请求,请求的url是
/hls/mystream.m3u8
然后服务器返回的内容就是一个m3u8文件的内容。
接下来就是一个请求m3u8文件列举出的ts流,比如随便找一个标记为:
TCP segment of reassembled PDU
然后Follow TCP Stream,就会看到类似
GET /hls/mystream-20.ts HTTP/1.1
User-Agent: Lavf/56.40.101
Accept: */*
Connection: close
Host: 172.28.2.85:8080
Icy-MetaData: 1
HTTP/1.1 200 OK
Server: nginx/1.8.0
Date: Fri, 21 Aug 2015 07:40:50 GMT
Content-Type: video/mp2t
Content-Length: 321104
Last-Modified: Fri, 21 Aug 2015 07:40:32 GMT
Connection: close
ETag: "55d6d5f0-4e650"
Expires: Fri, 21 Aug 2015 07:40:49 GMT
Cache-Control: no-cache
Accept-Ranges: bytes
G@…..
………
可以看到请求的是 /hls/mystream-20.ts
它对应的reponse就是ts流的数据。
版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章转载自:IT夜班车,否则按侵权处理.