【问题标题】:ffmpeg segmentation with multiple mp4 files to HLS stream具有多个 mp4 文件的 ffmpeg 分段到 HLS 流
【发布时间】:2015-05-24 16:43:19
【问题描述】:

我正在尝试从 .txt 中分割多个 mp4 文件(就像串联工作一样),但它似乎对我不起作用。

这是我的concat.txt

file video1.mp4
file video2.mp4
file video3.mp4

等等……

我的 ffmpeg 命令是:

ffmpeg -i concat.txt -map 0 -codec:v libx264 -codec:a libfaac -f ssegment \
-segment_list playlist.m3u8 -segment_list_flags +live -segment_time 10 out%03d.ts

不幸的是,每个媒体播放器都会在播放时抛出错误。

我可以使用 concat 文件,还是必须先将所有 mp4 连接成一个 mp4 文件,然后将该 mp4 文件分段以获得最终的 m3u8?

【问题讨论】:

  • 试试看,我猜...
  • 谢谢! -f concat 做到了:)
  • @aergistal 能否解释一下将输入文件转换为 MPEG-TS,然后如果可能通过命令转换为 .m3u8 ?我现在正在使用 ffmpeg 文档中提到的一个简单命令,即 ffmpeg -re -i in.mkv -codec copy -map 0 -f segment -segment_list playlist.m3u8 \ -segment_list_flags +live -segment_time 10 out%03d.mkv
  • 该评论措辞不当且具有误导性,因此我将其删除。我的意思是,如果您有具有不同编解码器的文件,则需要将它们转换为使用相同的编解码器才能使 concat demuxer 工作。我使用示例命令添加了正确答案。
  • 你试过 concat 过滤器吗? ffmpeg -i "concat:file1.mp4|file2.mp4|fileN.mp4" [...]

标签: video ffmpeg mp4 http-live-streaming


【解决方案1】:

ffmpeg concat demuxer 要求输入文件使用相同的编解码器,尽管容器可能会有所不同。您还需要确保视频和音频流在所有文件中具有相同的 ID。

ffmpeg -re -f concat -i concat.txt -c:v libx264 -vbsf h264_mp4toannexb -r 25 -g 75 -c:a libfdk_aac -hls_time 3 playlist.m3u8

我使用h264_mp4toannexb 比特流过滤器将 H.264 流转换为 MPEG-TS 所需的 Annex B 格式,将 GOP 大小设置为 75(3 秒,25 fps)和使用了 3 秒的片段长度,因为每个片段都应该以关键帧开始。

【讨论】:

    猜你喜欢
    • 2018-11-18
    • 2015-09-12
    • 2021-03-23
    • 1970-01-01
    • 2022-01-24
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多