slh*_*hck 12
FFmpeg 有一个内置的音频过滤器,可以在不改变音高的情况下改变速度。我们需要将文件编码为手机播放的某种格式。这当然取决于手机。许多现代智能手机如 AAC 音频:
ffmpeg -i weird.wma -filter:a "atempo=1.7" -c:a libfaac -q:a 100 final.m4a
Run Code Online (Sandbox Code Playgroud)
在这里,您可以使用-q:a
选项更改质量,其中值以百分比表示,越高表示越好。
或者,(平均)质量为 4 的 MP3 音频,越少越好(0 导致大约 245 kBit/s):
ffmpeg -i weird.wma -filter:a "atempo=1.7" -c:a libmp3lame -q:a 4 final.mp3
Run Code Online (Sandbox Code Playgroud)
如果您的手机不支持其中任何一项,我们将不得不进一步挖掘。哦,我在这里使用ffmpeg
同义词avconv
。它们并不完全相同,但对于上述情况,您可以使用任一工具。如果您的 FFmpeg 或 avconv 版本未捆绑 FAAC 或 LAME,请从FFmpeg 下载页面获取静态 Linux 版本。
如果您不喜欢 FFmpeg 过滤器,这是另一种方法:
首先,您需要以未压缩格式提取原始音频流,例如 WAV 容器中的 PCM 立体声 16 位音频。
ffmpeg -i weird.wma temp.wav
Run Code Online (Sandbox Code Playgroud)
现在我们可以使用该文件temp.wav
来缩短音频。我们有几个选择:
SoX提供了几种不同的过滤器,可让您更改速度、音高或节奏。简单地改变速度会增加音高以补偿长度,所以这听起来可能不自然。
该tempo
过滤器采用先进的算法来缩短文件,但保持间距,通过将其划分成更小的时间窗口,然后选择“合并”起来,从而加快速度。例如:
sox temp.wav output.wav -tempo 1.7
Run Code Online (Sandbox Code Playgroud)
这听起来可能有点奇怪。如果是,请使用选项 2。
该程序承诺提供比 SoX 更好的质量,并且可以从 GitHub 获得用 Python 编写的命令行版本。命令可能看起来像这样 - 请记住,默认情况下它会拉伸文件,因此为了缩短它,我们计算了 1.7 的倒数,即 0.59:
python paulstretch_stereo.py -s 0.59 temp.wav output.wav
Run Code Online (Sandbox Code Playgroud)
现在我们有一个缩短的 WAV 文件,但它仍未压缩,因此我们需要再次压缩它。有关各种格式,请参阅本文顶部的选项。
ffmpeg -i output.wav -c:a …
Run Code Online (Sandbox Code Playgroud)
上面概述的非 ffmpeg 方法将丢失您的元数据;您可以在将 output.wav 转换为压缩格式时再次添加它,如下所示:
ffmpeg -i output.wav -i weird.wma -map 0 -map_metadata 1 -c:a ...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9281 次 |
最近记录: |