ffmpeg在HLS流中剪切视频,暂停播放

时间:2015-11-13 15:10:48

标签: ffmpeg avplayer hls

我有这个播放列表:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:7
#EXT-X-MEDIA-SEQUENCE:0

我想插入剪切片段,因为生成的流比正常的6s长度(1s和3s之间)略短。

所以流看起来像这样。

stream136.ts
#EXTINF:7.133333,
stream137.ts
#EXT-X-DISCONTINUITY
#EXTINF:3.68,
cutstream20.ts
#EXTINF:6.933333,
stream21.ts
#EXTINF:5.2,
stream22.ts

VLC通过非常糟糕的打嗝来完成不连续性,iOS上的AVPlayer完全停止在不连续处。如果我删除剪辑剪辑,则播放顺畅。

如何创建剪切片段或修改播放列表以允许在iOS上播放?

cut命令如下所示: ffmpeg -y -i file.ts -ss 3 -c:v copy -c:a copy cut.ts

1 个答案:

答案 0 :(得分:2)

EXT-X-TARGETDURATION是最长持续时间,因此较低的值不是问题。

每个片段必须从关键帧开始(更确切地说,在MPEG-TS的情况下,PAT / PMT后跟IDR)。

由于您正在寻找一些任意时间戳并复制现有编码,因此您的网段可能不会以关键帧开头,从而导致问题。

您可以尝试将-ss参数放在 -i之前,因为它会在流复制(wiki)时使用关键帧解析输入。