如何合并原始 H.264 视频和 AAC 音频流,确保视频与音频时长相匹配?

如何合并原始 H.264 视频和 AAC 音频流,确保视频与音频时长相匹配?

我的屏幕录制文件损坏了,我使用了mp4修复工具分别提取原始 h264 流和 aac 流。音频听起来不错,但 h264 流似乎没有明确定义的帧速率(至少,我无法从 mediainfo 中找到它)。

因此我用 FFmpeg 合并了音频和视频,由于我没有指定帧速率,所以最终的视频为 25.000 FPS,而且它比音频还长。

我想通过缩放视频时长来匹配音频,从而正确地合并两个流而不丢失任何帧。

我不太清楚可变帧率是如何编码的,但一般的屏幕录制显示视频帧率是可变的,平均接近 44.7 FPS(最小约 5,最大约 57)。恢复的流可能还丢失了一些帧,但现在视频已经可以播放了。

答案1

我最终手动设置了 FPS。经过 FFMPEG 操作后,我看到了最终的帧数,我将其除以音频流的持续时间,并将其用作 FPS。

所以

ffmpeg -r <fps> -i video.mp4 -i audio.wav -c:v copy -c:a aac output.mp4

(我使用 WAV 是因为 AAC 最终无法很好地同步,因为原始 AAC 存储在 ADTS 容器中而没有持续时间信息)

相关内容