主页 M

ffmpeg分隔大文件通过m3u8播放器实时播放

2021-03-17 网页编程网 网页编程网

ffmpeg.exe -i a.mp4 -hls_time 30 -hls_list_size 0 -f hls a.m3u8

当视频播放时,利用的是m3u8进行列表播放。上面代码段里, -i 表示输入(input)  a.mp4,  -hls_time 30 表示每个分块断是30秒,hls_list_size 表示序号是从0开始。a.m3u8 表示最终生成的文件名。

上面代表的是意思是:用ffmpeg把a.mp4进行分割,每个分段长为30秒,并把分割后的信息存放在a.m3u8里。

执行上述命令后,就可以得到 一些列的 *.ts 文件和一个a.m3u8文件。

简单的说,m3u8存放的是播放列表,视频以.ts格式存储, ts即"Transport Stream"的缩写。 全称为MPEG2-TS,MPEG2-TS,格式的特点就是要求从视频流的任一片段开始都是可以独立解码的。

不用mp4是因为,如果用mp4,那么在2个分块直接播放时,会出现卡顿。而ts格式可以无缝对接。

你甚至可以设定客户端存储的数量,例如设置为3,当使用手机看到5.ts时,手机开始缓存6.ts ,7.ts, 8.ts, 只有这3个都下载完毕后,才播放,而不用等到整个下完才播放,这样增加了播放的流畅度。(有时候我们看视频时,卡顿时,手机会显示一直在缓冲中,来缓存片段。。。)

m3u8不是<video> 标签的支持的标准格式。换句话说,你使用如下代码是无法播放的:

<video controls><source src="a.m3u8"  type=application/x-mpegURL></video>

可以使用hls。

https://www.cnblogs.com/mqingqing123/p/14127924.html

阅读原文
阅读 4350
123 显示电脑版