如何提取完全同步的音频与ffmpeg?



我有一个带有视频和音频的MP4文件。我只需要将音频流提取为MP3文件。

然而,对于我们的应用程序来说,音频文件的定时/同步与原始视频完全一致是至关重要的,因为我们基于定时交叉关联音频特征。

我现在使用这个命令:

ffmpeg -y 
-v error 
-map 0:a ./the-output-file-mp3
-map 0:v ~/a-dummy-video-output-file.mp4
-i ~/the-input-file.mp4
-acodec copy 

,正如我在某处读到的,映射0:a和0:v将保证对齐&同步。然后我丢弃视频文件,因为它不需要。

但是,直接提取音频要快几个数量级:

ffmpeg -y 
-v error 
-map 0:a ./the-output-file-mp3
-i ~/the-input-file.mp4
-acodec copy 

但我不知道这是否保证对齐,因为我在这一页读到:

如果您只从视频流中提取音频,则音频的长度可能小于视频的长度。为了确保这种情况不会发生,提取音频和视频与相同的调用ffmpeg,例如"ffmpeg -i vid。Avi -map 0:a audio.wav -map 0:v onlyvideo.avi

然而,也许我太重视这个评论了。我不在乎音频剪辑是否提前结束,但关键是它不能开始得太晚,或者在任何时候与原始视频不同步。

ffmpeg提取音频流的最有效方法是什么,并保证它与视频100%对齐(并在完全相同的时间开始)?

这个方法能保证对齐吗?

ffmpeg -y 
-v error 
-i ~/the-input-file.mp4
-vn
-acodec copy 
~/the-output-file.mp4

从我验证的100多个视频文件中,以下一个给出了正确的对齐,并且速度很快:

ffmpeg -y 
-v error 
-i ~/the-input-file.mp4
-vn
-acodec copy 
~/the-output-file.mp4

然而,我的视频文件已经有很强的流对齐,对于更混乱的文件可能需要-copyts。

最新更新