ffmpeg 在 HLS 流中剪切视频,暂停播放
ffmpeg cut video in an HLS stream, pauses playback
我有这个播放列表:
#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 上播放?
剪切命令如下所示:
ffmpeg -y -i file.ts -ss 3 -c:v copy -c:a copy cut.ts
EXT-X-TARGETDURATION
是最大持续时间,因此较低的值不是问题。
每个片段都必须从一个关键帧开始(更准确地说,在 MPEG-TS 的情况下,PAT/PMT 后跟一个 IDR)。
由于您正在寻找一些任意时间戳并复制现有编码,因此您的片段可能不是以关键帧开头,从而导致问题。
您可以尝试将 -ss
参数 放在 之前 -i
因为它会在流复制时使用关键帧解析输入 (wiki).
我有这个播放列表:
#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 上播放?
剪切命令如下所示:
ffmpeg -y -i file.ts -ss 3 -c:v copy -c:a copy cut.ts
EXT-X-TARGETDURATION
是最大持续时间,因此较低的值不是问题。
每个片段都必须从一个关键帧开始(更准确地说,在 MPEG-TS 的情况下,PAT/PMT 后跟一个 IDR)。
由于您正在寻找一些任意时间戳并复制现有编码,因此您的片段可能不是以关键帧开头,从而导致问题。
您可以尝试将 -ss
参数 放在 之前 -i
因为它会在流复制时使用关键帧解析输入 (wiki).