![如何使用 ffplay 改变音频速度:](https://linux22.com/image/1162825/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20ffplay%20%E6%94%B9%E5%8F%98%E9%9F%B3%E9%A2%91%E9%80%9F%E5%BA%A6%EF%BC%9A.png)
如果有较长的文本需要阅读,我喜欢让老师用以下脚本朗读给我听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>
这将以两倍速度播放音频文件。更多信息请点击这里:
答案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
希望这能实现你的目标。
参考:
- svn MPlayer 的十大技巧和窍门我自己的页面上有这个特殊的 MPlayer 技巧和一些其他技巧。