gpt4 book ai didi

ffmpeg - 如何使用 FFmpeg 连接两个 MP4 文件?

转载 作者:行者123 更新时间:2023-12-04 22:50:56 26 4
gpt4 key购买 nike

我正在尝试使用 ffmpeg 连接两个 mp4 文件。我需要这是一个自动过程,因此我选择了 ffmpeg。我正在将这两个文件转换为 .ts文件,然后将它们连接起来,然后尝试对连接后的 .ts 进行编码文件。这些文件是 h264aac编码,我希望保持质量相同或尽可能接近原始质量。

ffmpeg -i part1.mp4 -vcodec copy -vbsf h264_mp4toannexb -acodec copy part1.ts
ffmpeg -i part2.mp4 -vcodec copy -vbsf h264_mp4toannexb -acodec copy part2.ts
cat part1.ts part2.ts > parts.ts
ffmpeg -y -i parts.ts -acodec copy -ar 44100 -ab 96k -coder ac -vbsf h264_mp4toannexb parts.mp4
不幸的是,我在编码期间从 ffmpeg 返回以下错误消息:
[h264 @ 0x1012600]sps_id out of range
[h264 @ 0x1012600]non-existing SPS 0 referenced in buffering period
[h264 @ 0x1012600]sps_id out of range
[h264 @ 0x1012600]non-existing SPS 0 referenced in buffering period
[NULL @ 0x101d600]error, non monotone timestamps 13779431 >= 13779431kbits/s
av_interleaved_write_frame(): Error while opening file
这发生在编码的一半左右,这让我认为你不能将两个 .ts 文件连接在一起并让它工作。

最佳答案

FFmpeg 有三种连接方法:

1. concat video filter
如果您的输入没有相同的参数(宽度、高度等),或者格式/编解码器不同,或者您想要执行任何过滤,请使用此方法。
请注意,此方法对所有输入进行重新编码。如果您想避免重新编码,您可以只重新编码不匹配的输入,以便它们共享相同的编解码器和其他参数,然后使用 concat demuxer 来避免重新编码所有内容。

ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv \
-filter_complex "[0:v] [0:a] [1:v] [1:a] [2:v] [2:a] \
concat=n=3:v=1:a=1 [v] [a]" \
-map "[v]" -map "[a]" output.mkv
2. concat demuxer
当您想避免重新编码并且您的格式不支持文件级连接(一般用户使用的大多数文件不支持文件级连接)时,请使用此方法。
$ cat mylist.txt
file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'

$ ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp4
对于 Windows:
(echo file 'first file.mp4' & echo file 'second file.mp4' )>list.txt
ffmpeg -safe 0 -f concat -i list.txt -c copy output.mp4
3. concat protocol
将此方法用于支持文件级连接的格式
(MPEG-1、MPEG-2 PS、DV)。不要与 MP4 一起使用。
ffmpeg -i "concat:input1|input2" -codec copy output.mkv
由于这些格式的性质和此方法执行的简单连接,此方法不适用于包括 MP4 在内的许多格式。

如果对使用哪种方法有疑问,请尝试使用 concat demuxer。
另见
  • FFmpeg FAQ: How can I join video files?
  • FFmpeg Wiki: How to concatenate (join, merge) media files
  • 关于ffmpeg - 如何使用 FFmpeg 连接两个 MP4 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25825538/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com