如何使用 ffplay 改变音频速度:

如何使用 ffplay 改变音频速度:

如果有较长的文本需要阅读,我喜欢让老师用以下脚本朗读给我听https://wiki.ubuntuusers.de/Sprachausgabe/#SVOX-pico2wave

1  #!/bin/bash    
2  pico2wave -l=de-DE -w=/tmp/test.wav "$(cat ${1})"
3  avplay -f wav -loglevel 0 >/dev/null -x 100 -y 50  -vn -autoexit /tmp/test.wav
4  rm /tmp/test.wav

将脚本另存为svox.sh在/usr/本地/bin并开始

svox.sh TEXTFILE.txt

这对于英语文本非常有效(“pico2wave-l=en-GB [...]“当然是在第 2 行),但是德语的音频速度有点慢。

到目前为止,我尝试过的是用

avplay -f wav -loglevel 0 >/dev/null -x 100 -y 50  -vn -autoexit -filter:a "atempo=2.0" /tmp/test.wav 

但那不起作用。为了找出原因,我尝试在终端中输入以下命令:

avplay -f wav -x 100 -y 50  -vn -autoexit -filter:a "atempo=2.0" test.wav

我收到以下错误信息:

[...]
Failed to set value 'atempo=2.0' for option 'filter:a': Option not found

因此,看起来语法不正确或不支持该选项。有人知道加快音频输出速度的方法吗?

附言:

我的系统:Linux/Lubuntu 16.04.5 LTS,64 位

答案1

可以-af像这样使用该选项:

ffplay -af "atempo=2" <audio_file>

这将以两倍速度播放音频文件。更多信息请点击这里:

https://ffmpeg.org/ffplay.html#Main-options

答案2

与此同时,我设法用一种变通方法解决了这个问题。我使用这个脚本:

#!/bin/bash

pico2wave -l=de-DE -w=/tmp/test.wav "$(cat ${1})"
ffmpeg -i /tmp/test.wav -filter:a "atempo=1.2" -vn /tmp/test2.wav  # increase speed by a factor of 1.2
firejail --net=none avplay -f wav -loglevel 0 >/dev/null -x 100 -y 50  -vn -autoexit /tmp/test2.wav  # play sound in a sandbox
rm /tmp/test.wav
rm /tmp/test2.wav

答案3

如果您乐意使用 MPlayer 而不是 FFplay,那么有一个相对简单的方法可以实现您的目标。使用以下语法:

mplayer -af scaletempo -speed 0.5 my_file.mp4

记得替换my_file.mp4您的实际媒体文件。现在,在播放过程中您可以使用以下键:

{   <---This key will dynamically slow the playback speed
}   <---This key will dynamically increase playback speed

希望这能实现你的目标。

参考:

相关内容