1

有一个名为 input.txt 的文件

file '/home/1.flv'
file '/home/2.flv'

我可以使用该命令将 1.flv 和 2.flv 连接成一个 mp4 文件。

# there are two files in output.mp4
ffmpeg -f concat -i input.txt -c copy output.mp4

当我使用以下命令时

ffmpeg -i "concat:1.flv|2.flv" -c copy output.mp4

我发现里面只有一个文件1.flvoutput.mp4为什么?

4

2 回答 2

6

1.flv我发现 . 文件中只有一个文件output.mp4。为什么?

您的第一个命令使用concatdemuxer。如果您想避免重新编码并且您的输入不支持文件级连接,则可以使用此选项。使用 demuxer 要求所有文件必须具有相同的流(相同的格式、相同的时基等),但这是一个相对较新的添加,因此较旧的 ffmpeg 版本将没有此功能。

您的第二个命令使用的concat协议要求您的输入支持文件级连接(例如 MPEG-1 视频、MPEG-2 视频和 DV)。这是两种不同的连接方法(或“加入”,因为它通常由用户调用)。

另请参阅FFmpeg Wiki上的如何连接(加入、合并)媒体文件。我看到你也在 ffmpeg-user 上问过这个问题,其他人也提供了答案:[FFmpeg-user] can't concatenate the flv file

于 2013-02-12T18:43:06.157 回答
0

如果文件使用 H.264,则需要先重新 混合它们。

ffmpeg -i q.mp4 -c copy -bsf h264_mp4toannexb q.ts

ffmpeg -i r.mp4 -c copy -bsf h264_mp4toannexb r.ts

ffmpeg -i "concat:q.ts|r.ts" -c copy -bsf aac_adtstoasc qr.mp4
于 2013-02-12T15:45:53.660 回答