HLS流媒体解决方案

HLS(HTTP Live Streaming)是苹果公司针对iPhone、iPod、iTouch和iPad等移动设备而开发的基于HTTP协议的流媒体解决方案
在一些视频网站,F12打开一些video标签的src地址,发现并不是想象中的xxx.mp4,而是这样开头的一个地址

src="blob:https://www.xxx.com/023603e2-0d9f-4398-ba53-027b242f520b"

这明显是加密了视频的真实地址,先不管这个奇怪的东西,有兴趣的同学可以搜一下blob:http
然后尝试在Network查找地址,随着视频播放,发现这样几条信息:

https://xxx.com/x/y/z/xyz/hls-360p0.ts?e=12345&h=d56591aa6ccc48c0
https://xxx.com/x/y/z/xyz/hls-360p1.ts?e=23456&h=6ccc48c0d56591aa
https://xxx.com/x/y/z/xyz/hls-360p2.ts?e=76431&h=aa6cccd5659148c0
...

在新标签页中打开地址,自动下载了一个后缀名为ts的视频文件,时长为10s,所有文件拼起来就是完整的原视频,这个视频体系就是遵循HLS协议,将完整视频切分成一个个小碎片,按需传给用户。
network中有一个请求时 xxx.m3u8 的文件,xxx.m3u8文件,它是一个播放索引列表,类似于视频文件播放目录,管理着请求的每个 xxx.ts 视频

切分视频示例

ffmpeg 工具演示,切分过程如下

1.将mp4转换为ts:

ffmpeg -i out.mp4 -c copy -bsf h264_mp4toannexb output.ts

2.将ts切分:

ffmpeg -i output.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 10 output%03d.ts

这样就得到一大堆.ts文件和一个.m3u8文件
打开.m3u8文件,发现它是一个播放索引列表

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:15
#EXTINF:14.472789,
output000.ts
#EXTINF:10.427078,
output001.ts
#EXTINF:10.427078,
output002.ts
...
...
#EXTINF:10.427078,
output017.ts
#EXTINF:8.883867,
output018.ts
#EXT-X-ENDLIST

一款牛逼的在线获取 m3u8 类型视频文件工具

http://blog.luckly-mjw.cn/tool-show/m3u8-downloader/index.html

一款牛逼的播放器

https://cloud.tencent.com/document/product/881/20207

你可能感兴趣的:(HLS流媒体解决方案)