我有一个带有视频和音频的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。