m3u8是苹果公司推出的视频播放标准,是m3u8的一种,只是编码格式采用的是UTF-8。
m3u8准确来说是一种索引文件,使用m3u8文件实际上是通过它来解析对应的放在服务器上的视频网络地址,从而实现在线播放。使用m3u8格式文件主要因为可以实现多码率视频的适配,视频网站可以根据用户的网络带宽情况,自动为客户端匹配一个合适的码率文件进行播放,从而保证视频的流畅度。
现在的视频网站采用的是流媒体传输协议,就是将一段视频切成无数个小段,这几个小段就是ts格式的视频文件,一段一段的网站上播放。这样做的好处是观看更加流畅,因为他会根据网络状况自动切换视频的清晰度,在网络状况不稳定的情况下,对保障流畅播放非常有帮助。如果直接加载mp4或者flv文件,当文件很大时,比如一集电影2个小时,1080p的可能有2G的大小,直接加载会很慢,如果进行切片,这样只需要加载m3u8文件,根据m3u8里的索引进行播放,这种加载会很快。
MP4文件做视频ts切片 例如可以把mp4文件转为很多ts片段和m3u8索引文件。
(1)先用ffmpeg把1.mp4文件转换为1.ts文件:
ffmpeg -y -i 1.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 1.ts
(2)再用ffmpeg把1.ts文件切片并生成index.m3u8文件,5秒一个的ts切片:
ffmpeg -i 1.ts -c copy -map 0 -f segment -segment_list index.m3u8 -segment_time 5 test-%03d.ts
segment_time: 切片时间,上面设置的每个切片是5秒。
test-:这个表示切片的前缀
m3u8文件可以用用txt打开,例如我做的切片:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:10
#EXTINF:6.040000,
test-000.ts
#EXTINF:6.000000,
test-001.ts
#EXTINF:6.000000,
test-002.ts
#EXTINF:6.000000,
test-003.ts
#EXTINF:6.000000,
test-004.ts
#EXTINF:5.600000,
test-005.ts
#EXTINF:3.720000,
test-006.ts
#EXTINF:3.480000,
test-007.ts
#EXTINF:3.080000,
。。。
。。。
可以看到m3u8文件里记载了各个切片的信息。
下面是切片的ts列表
这种切片文件用vlc播放器可以播放,打开index.m3u8即可。