FFmpeg总结(九)用ffmpeg进行切片生成m3u8索引文件

C++ 专栏收录该内容
26 篇文章 3 订阅

在直播和点播中,通常后台并不会直接给一个http://xxx.xxx.xxx.xxx/xxx.mp4这样的url给客户端,而是通过m3u8索引列表,给客户端。今天来通过ffmpeg进行切片生成m3u8索引文件。

首先将视频文件转为视频编码h.264,音频编码aac格式的mp4文件
1、使用ffprobe查看文件编码方式

这里写图片描述

2、如果不是mp4的,可以用如下命令进行转

ffmpeg -i input.mkv -acodec copy -vcodec copy out.mp4 

3、将mp4转为完整的ts

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

为什么要用-bsf h264_mp4toannexb,主要是因为使用了mp4中的h264编码,而h264有两种封装:
一种是annexb模式,传统模式,有startcode,SPS和PPS是在ES中;另一种是mp4模式,一般mp4、mkv、avi会没有startcode,SPS和PPS以及其它信息被封装在container中,每一个frame前面是这个frame的长度,很多解码器只支持annexb这种模式,因此需要将mp4做转换;在ffmpeg中用h264_mp4toannexb_filter可以做转换;所以需要使用-bsf h264_mp4toannexb来进行转换;

4、将ts切片,并生成m3u8文件

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

其中segment 就是切片,-segment_time表示隔几秒进行切一个文件,上面命令是隔5s,你也可以调整成更大的参数。

这里写图片描述

切片完成后如下所示:

这里写图片描述

完整ts文件播放如下:

这里写图片描述

使用生成的m3u8索引播放如下:

这里写图片描述

  • 6
    点赞
  • 7
    评论
  • 10
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值