Как изменить темп звука и индивидуальность звука с помощью ffmpeg?

Мне удалось воспроизвести аудиофайлы с помощью класса ffmpeg и AudioTrack в моем проекте Android. Я могу изменить скорость звука с помощью метода setRate класса AudioTrack. Но это также меняет высоту звука, я хочу изменить только темп звука, но я не нашел решения в сети.

кто-нибудь может помочь мне в этом, так как для этого нет поддержки.


person Vipul Purohit    schedule 29.06.2012    source источник


Ответы (3)


Вы можете использовать фильтр atempo в ffmpeg 1.0 и более поздних версиях:

ffmpeg -i input.wav -f:a atempo=1.25 output.wav

atempo принимает значения только от 0,5 до 2,0, но вы можете обойти ограничение, связав несколько фильтров:

ffmpeg -i input.wav -f:a atempo=2,atempo=1.5 output.wav
person Lri    schedule 15.04.2014
comment
Но использование этого сокращает исходную продолжительность звука. Что, если я хочу сохранить исходную продолжительность вместе с измененной высотой тона? - person Vikrant_Dev; 14.01.2016
comment
В Windows с версией N-77870 по крайней мере кажется, что вам нужно указать фильтр слов, как в ffmpeg -i input.wav -filter:a atempo=1.25 output.wav - person User; 09.02.2016
comment
ffmpeg -i input.wav -af atempo = 1.0827 output.wav - person ariane26; 30.08.2020

Решение. Я попробовал библиотеку SoundTouch. Я успешно скомпилировал его для Android, но потом мне не удалось использовать его функцию, потому что я не знаю, как использовать эту библиотеку для загрузки звука.

Но после этого я попробовал библиотеку под названием Sonic. Это в основном для речи, поскольку он использует алгоритм PSOLA для изменения высоты тона и темпа. Но это нормально.

person Vipul Purohit    schedule 16.07.2012
comment
Привет, випул. Я пытаюсь объединить и изменить темп mp3-файлов в своем приложении для Android. Поскольку я новичок в Android, я не знаю, как использовать библиотеку Sonic, которую вы предложили выше. Что касается работы, которую вы проделали с аудиофайлами, я надеюсь, что у вас есть решение моей проблемы. Если вы можете помочь мне изменить темп, это будет большим подспорьем. И если у вас есть ответ, я могу задать вопрос по нему. Спасибо Vipul - person Harsh; 01.08.2012
comment
Привет @Harsh User OpenSL ES library, которая является частью ОС Android, и попробуйте этот вопрос OPEN SL ES Это поможет вам использовать библиотеку OpensSL ES. - person Vipul Purohit; 01.08.2012
comment
@Vipul Purhit Я разрабатываю видеоплеер, который записывает видео и управляет его звуком, то есть меняет его высоту. как я могу использовать для этого libsonic, поскольку он работает только с аудиофайлами. - person Talha Malik; 30.03.2013
comment
Привет, @VipulPurohit. Я просмотрел библиотеку Sonic и увидел в ней файл talk.bin, так что не могли бы вы сказать мне, как я могу создать этот .bin-файл путем записи или вручную из любого файла mp3 и т. Д. - person Jagdeep Singh; 12.06.2013

Высота и темп очень сильно связаны. То, что вы пытаетесь сделать, называется «растяжением во времени» и представляет собой довольно сложный алгоритм. Вы можете найти информацию об этом в Интернете, а библиотеку java для него можно найти здесь вместе с бумагой с описанием процесса.

person Geobits    schedule 29.06.2012