我正在尝试更改视频的帧速率,以便播放时间更长一些。我不想重新编码,我希望音频保持同步。我能够从视频中提取原始视频,然后使用 remux 重新混合...
ffmpeg -i source.mkv -c copy -f h264 video.h264
ffmpeg -r 23.976 -i video.h264 -c copy dest.mp4
这样便会创建一个按正确时间播放但没有音频的视频。
我怎样才能获得带有音频的完成的 .mp4?
答案1
您需要调整音频速度以匹配视频并重新编码,但您无需重新编码视频即可执行此操作。
首先,计算您需要调整音频的程度。假设这原本是一个 25fps 的视频,您要将其减慢到 23.976,则您的速度因子为 23.976/25 = 0.959。我们将把它插入到过滤器中atempo
以调整音频的速度,将其从原始速度中拉出source.mkv
。
ffmpeg -i source.mkv -r 23.976 -i video.h264 -filter_complex "[0:a]atempo=0.959[out]" -map 1:v -map "[out]" -c:a aac -c:v copy out.mp4
这里-filter_complex
从第零个输入文件 ( ) 中获取音频流source.mkv
,并通过过滤器运行它atempo
,然后命名输出[out]
。然后我们使用-map
参数来表示我们想要从第一个输入文件 (从零开始,所以实际上是第二个, ) 中获取该音频流以及视频流video.h264
。我们必须重新编码音频,因为我们想要更改它,但我们可以将视频复制到容器中。