我计划使用 Perl 通过 FFMpeg 从媒体文件中提取音频。据我所知,FFMpeg 需要很多参数,如比特率等,用于提取音频。因此,对于一个特定的视频,我们可以通过测试提供参数,FFMpeg 将为我们提供音频。但是当我需要将其应用于大量媒体文件时,我需要一些最佳参数,以便始终从所有文件中提取出合适的音频。
那么有人可以指导我应该使用什么默认参数来确保几乎所有媒体文件都能进行良好的音频提取吗?
答案1
您可以使用-codec copy
或-c copy
(或-c:a copy
)。这将 100% 复制比特流。复制比特流有一定的限制,因为您只能剪切关键帧;但据我所知,这主要适用于视频流而不是音频(据我所知,音频编解码器没有与关键帧类似的功能)。就我个人而言,我从未遇到过使用比特流复制剪切音频的任何问题。
ffmpeg -i input.mp3 -c:a copy -ss 10 -t 50 output.mp3
您的次佳选择是使用未压缩的 PCM 音频 ( -c:a pcm_s16le
) 或无损编解码器(如 FLAC ( -c:a flac
)。这些将产生与原始音频相同的声音。不过,这会给您一个更大的文件。
ffmpeg -i input.mp3 -c:a pcm_s16le -ss 10 -t 50 output.wav
ffmpeg -i input.mp3 -c:a flac -ss 10 -t 50 output.flac
您可以-ss
在输入之前放置以大大加快速度,尽管这可能会导致搜索不太准确。由于您正在编写此脚本,您可能会发现该-to
选项有些用处(请参阅文档)。