假设pipe:0
是一个 3 秒的 wav 文件
假设input2.mp4
是一个 1 秒的 mp4 文件
使用此命令:
ffmpeg -f f32le -ar 44100 -channels 2 -i pipe:0 -t 5 -itsoffset 4 -i input2.mp4 -y -f mp4 -c:v copy -map 0:a -map 1:v output.mp4
我希望它output.mp4
有 5 秒的持续时间,因为最长的流,视频流,持续那么久。
但是,输出文件仅持续 3 秒,即音频流的持续时间。如果我output.mp4
用 QuickTime 播放,确实只有 3 秒的音频。
有趣的是,当我使用 分析输出时ffprobe
,我可以看到视频流有 5 秒的持续时间和 4 秒的开始时间,这是应该的。
只要它是最长的流,我怎样才能输出?我很确定我可以重新编码视频流(而不是复制它),但我想避免这种情况。我只是不明白为什么不重新编码就不可能。
为什么不ffmpeg
考虑有超过 3 秒的时间戳?
FFmpeg 不会根据其他流的持续时间来延长特定流。如果要扩展流,请使用过滤器 - apad 用于音频,tpad 用于视频。然后添加 -shortest 或 -t 持续时间以限制输出。