Как изменить аудио скорость с 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/local/bin и запустите его с

svox.sh TEXTFILE.txt

Это работает действительно хорошо с английскими текстами (с "pico2wave - l=en-ГБ [...]" в строке 2, конечно), но аудио скорость на немецком языке является немного медленной.

Что я попробовал, до сих пор заменяет строку 3

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

Таким образом, кажется, что или синтаксис не правилен или опция, не поддерживается. Кто-либо знает о способе ускорить аудиовыход?

P.S.:

моя система: Linux/Lubuntu 16.04.5 LTS, 64 бита

1
задан 20 January 2019 в 16:48

3 ответа

Можно использовать опцию -af следующим образом:

ffplay -af "atempo=2" <аудио_файл>

Это будет воспроизводить аудиофайл в два раза быстрее. Подробнее здесь:

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

2
ответ дан 30 December 2020 в 02:12

тем временем мне удалось решить эту проблему с обходным решением. Я использую этот сценарий:

#!/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
1
ответ дан 7 December 2019 в 15:08

Если Вы рады использовать 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

Надо надеяться, это выполнит Вашу цель.

Ссылки:

0
ответ дан 7 December 2019 в 15:08

Другие вопросы по тегам:

Похожие вопросы: