使用ffmpeg将具有不连续标记的HLS转换为MP4

时间:2016-07-07 09:08:16

标签: video ffmpeg concatenation hls m3u8

我正在尝试使用ffmpeg将HLS中的所有块连接到单个mp4文件中。 我试过这个命令: ffmpeg -i -vcodec copy -acodec copy -bsf:aac_adtstoasc

但是,我注意到如果m3u8包含不连续标记,则连接不能正常工作,即视频在所有丢失的块中停止。

任何想法,如何转换所以视频连续播放,即忽略丢失的块?

2 个答案:

答案 0 :(得分:1)

看起来这是一个已知问题。

https://trac.ffmpeg.org/ticket/5419

  

FFMPEG Trac门票#5419   不支持HLS EXT-X-DISCONTINUITY标记

答案 1 :(得分:0)

这个问题可以通过concat协议来解决

  1. 首先将输入m3u8文件转换为ts列表文件

    grep -e'^ http。*。ts $'input.m3u8 | awk'{print“file”,$ 1}'> all.ts

  2. 第二次使用all.ts作为连接到mp4文件的输入

    ffmpeg -protocol_whitelist'http,file,tcp'-nostdin -f concat -safe 0 -i all.ts -c copy -movflags faststart -y output.mp4