看中秋晚会,突然想看下央视直播协议,所以,用wireshark抓包看了下,大概看出他们的直播流程。以下的url,都可以直接wget到。很多细节东西没有搞清楚。记录下吧。
一、请求直播地址(类似HLS的m3u的url),获取到的一个xml文件。看里面的标签,能大概看出其中的意思。
http://cctv1.vtime.cntv.wscdns.com//cache/cctv1hds.f4m?AUTH=7MY0BoFXk9+L0eQC9rnTv/+EAzcDxd35FsowQKfvW7HCOjVLNRATgYVIHg2Nlbl1E/ApfvePNfP8DqyOjAXo7A==
<?xml version="1.0" encoding="UTF-8"?><manifest xmlns="http://ns.adobe.com/f4m/1.0">
<id>
cctv1hds
</id>
<streamType>
live
</streamType>
<duration>
0
</duration>
<bootstrapInfo
profile="named"
url="../cache/14_/seg1/index.bootstrap"
id="bootstrap74505"
>
</bootstrapInfo>
<media
streamId="cctv1hds_0"
url="../cache/14_/seg1/index"
bitrate="500"
bootstrapInfoId="bootstrap74505"
>
<metadata>
AgAKb25NZXRhRGF0YQgAAAAAAAhkdXJhdGlvbgBBUGJN0uFHrgAFd2lkdGgAQIaAAAAAAAAABmhlaWdodABAeWAAAAAAAAAMdmlkZW9jb2RlY2lkAgAEYXZjMQAKYXZjcHJvZmlsZQBAWQAAAAAAAAAIYXZjbGV2ZWwAQD4AAAAAAAAADnZpZGVvZnJhbWVyYXRlAAAAAAAAAAAAAAxhdWRpb2NvZGVjaWQCAARtcDRhAA9hdWRpb3NhbXBsZXJhdGUAQOdwAAAAAAAADWF1ZGlvY2hhbm5lbHMAQAAAAAAAAAAACXRyYWNraW5mbwoAAAACAwAJdGltZXNjYWxlAAAAAAAAAAAAAAhsYW5ndWFnZQIAA2BgYAAACQMACXRpbWVzY2FsZQAAAAAAAAAAAAAIbGFuZ3VhZ2UCAANgYGAAAAkAAAk=
</metadata>
</media>
<media
streamId="cctv1hds_1"
url="../cache/13_/seg1/index"
bitrate="850"
bootstrapInfoId="bootstrap74505"
>
<metadata>
AgAKb25NZXRhRGF0YQgAAAAAAAhkdXJhdGlvbgBBUGJN0uFHrgAFd2lkdGgAQI4AAAAAAAAABmhlaWdodABAgOAAAAAAAAAMdmlkZW9jb2RlY2lkAgAEYXZjMQAKYXZjcHJvZmlsZQBAWQAAAAAAAAAIYXZjbGV2ZWwAQD8AAAAAAAAADnZpZGVvZnJhbWVyYXRlAAAAAAAAAAAAAAxhdWRpb2NvZGVjaWQCAARtcDRhAA9hdWRpb3NhbXBsZXJhdGUAQOdwAAAAAAAADWF1ZGlvY2hhbm5lbHMAQAAAAAAAAAAACXRyYWNraW5mbwoAAAACAwAJdGltZXNjYWxlAAAAAAAAAAAAAAhsYW5ndWFnZQIAA2BgYAAACQMACXRpbWVzY2FsZQAAAAAAAAAAAAAIbGFuZ3VhZ2UCAANgYGAAAAkAAAk=
</metadata>
</media>
<media
streamId="cctv1hds_2"
url="../cache/12_/seg1/index"
bitrate="1200"
bootstrapInfoId="bootstrap74505"
>
<metadata>
AgAKb25NZXRhRGF0YQgAAAAAAAhkdXJhdGlvbgBBUGJN0uFHrgAFd2lkdGgAQJAAAAAAAAAABmhlaWdodABAggAAAAAAAAAMdmlkZW9jb2RlY2lkAgAEYXZjMQAKYXZjcHJvZmlsZQBAWQAAAAAAAAAIYXZjbGV2ZWwAQD8AAAAAAAAADnZpZGVvZnJhbWVyYXRlAAAAAAAAAAAAAAxhdWRpb2NvZGVjaWQCAARtcDRhAA9hdWRpb3NhbXBsZXJhdGUAQOdwAAAAAAAADWF1ZGlvY2hhbm5lbHMAQAAAAAAAAAAACXRyYWNraW5mbwoAAAACAwAJdGltZXNjYWxlAAAAAAAAAAAAAAhsYW5ndWFnZQIAA2BgYAAACQMACXRpbWVzY2FsZQAAAAAAAAAAAAAIbGFuZ3VhZ2UCAANgYGAAAAkAAAk=
</metadata>
</media>
<media
streamId="cctv1hds_3"
url="../cache/11_/seg1/index"
bitrate="2000"
bootstrapInfoId="bootstrap74505"
>
<metadata>
AgAKb25NZXRhRGF0YQgAAAAAAAhkdXJhdGlvbgBBUGJN0uFHrgAFd2lkdGgAQJQAAAAAAAAABmhlaWdodABAhoAAAAAAAAAMdmlkZW9jb2RlY2lkAgAEYXZjMQAKYXZjcHJvZmlsZQBAWQAAAAAAAAAIYXZjbGV2ZWwAQD8AAAAAAAAADnZpZGVvZnJhbWVyYXRlAAAAAAAAAAAAAAxhdWRpb2NvZGVjaWQCAARtcDRhAA9hdWRpb3NhbXBsZXJhdGUAQOdwAAAAAAAADWF1ZGlvY2hhbm5lbHMAQAAAAAAAAAAACXRyYWNraW5mbwoAAAACAwAJdGltZXNjYWxlAAAAAAAAAAAAAAhsYW5ndWFnZQIAA2BgYAAACQMACXRpbWVzY2FsZQAAAAAAAAAAAAAIbGFuZ3VhZ2UCAANgYGAAAAkAAAk=
</metadata>
</media>
</manifest>
==========================================================================分割线==============================================
<media
streamId="cctv1hds_3"
url="../cache/11_/seg1/index"
bitrate="2000"
bootstrapInfoId="bootstrap74505"
>
<metadata>
AgAKb25NZXRhRGF0YQgAAAAAAAhkdXJhdGlvbgBBUGJN0uFHrgAFd2lkdGgAQJQAAAAAAAAABmhlaWdodABAhoAAAAAAAAAMdmlkZW9jb2RlY2lkAgAEYXZjMQAKYXZjcHJvZmlsZQBAWQAAAAAAAAAIYXZjbGV2ZWwAQD8AAAAAAAAADnZpZGVvZnJhbWVyYXRlAAAAAAAAAAAAAAxhdWRpb2NvZGVjaWQCAARtcDRhAA9hdWRpb3NhbXBsZXJhdGUAQOdwAAAAAAAADWF1ZGlvY2hhbm5lbHMAQAAAAAAAAAAACXRyYWNraW5mbwoAAAACAwAJdGltZXNjYWxlAAAAAAAAAAAAAAhsYW5ndWFnZQIAA2BgYAAACQMACXRpbWVzY2FsZQAAAAAAAAAAAAAIbGFuZ3VhZ2UCAANgYGAAAAkAAAk=
</metadata>
</media>
包括四个清晰度,从码率(bitrate: 500,850,1200,2000)可以看出。
把以上<metadata>中的数据 base64解码并不能完全解析出来,但是从解析的内容来看,主要是指明了其中宽高之类的信息
onMetaDatadurationAPbMҡGwidth@height@ videocodecidavc1
avcprofile@Yavclevel@?videoframerate audiocodecidmp4aaudiosamplerate@簀
audiochannels@ trackinfo
timescalelanguage``` timescalelanguage```
二、请求其中的一个清晰度的码流信息:获取到一堆的加密过得信息,没有解密的本事。
http://cctv1.vtime.cntv.wscdns.com/cache/14_/seg1/index.bootstrap
三、应该是根据第二部获取的信息开始实际的码流请求。
http://cctv1.vtime.cntv.wscdns.com/cache/11_/seg1/indexSeg368486310-Frag368486310
/indexSeg368486310-Frag368486310的序列号是不断增长的。获取的应该是实际的码流数据。(用播放器不能直接播放,估计是加密了的)。