我的屏幕录制文件损坏了,我使用了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 容器中而没有持续时间信息)