使用 ffmpeg 在不改变频率的情况下对音频进行时间膨胀和重新采样

Use ffmpeg to time-dilate and resample audio without changing frequencies

我有一些以每秒 48000 个样本的速率采样的音频(波形文件)。

此音频是为匹配 30 FPS 视频而创建的。但是,视频实际上以 29.97 (30 X 1000/1001) 的 NTSC 帧速率在目标上播放。

这意味着我需要对音频进行时间膨胀,以便在之前有 48000 个样本的地方有 48048 个样本(播放速度慢 1.001 倍)但仍然保持最终音频文件的速率为每秒 48000 个样本.

此外,理想情况下,我想使用 FFMPEG 的 sox 库选项进行重新采样,因为我听说它具有更高的质量。

任何人都可以帮助我以这种方式处理文件所需的命令行吗?

基本命令是

ffmpeg -i in.wav -af asetrate=47952,aresample=48000:resampler=soxr out.wav

这假定链接了 libsoxr。