2012-06-29 4 views
4

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

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

ответ

7

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

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

+0

Привет, vipul. Я пытаюсь конкатенировать и изменять темп mp3-файлов в приложении для Android. Поскольку я новичок в android, я не знаю, как использовать библиотеку Sonic, которую вы предложили выше. Как работа, которую вы сделали с аудиофайлами, я надеюсь, что у вас есть решение для моей проблемы. Если вы можете помочь мне в изменении темпа, это будет большой помощью. И если у вас есть ответ, я могу задать вопрос. Спасибо Vipul – Harsh

+0

Привет @Harsh User OpenSL ES библиотека, которая является частью ОС Android и пытается ответить на этот вопрос [OPEN SL ES] (http://stackoverflow.com/questions/11094377/android-how-to-change-playback- rate-of-music-using-opensl-es) Это поможет вам использовать OpensSL ES lib. –

+0

@Vipul Purhit Я занимаюсь разработкой видеопроигрывателя, который записывает видео и манипулирует его звуком, и меняет его высоту. как я могу использовать libsonic для этого, поскольку он работает только для аудиофайлов. –

2

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

+0

И для родная библиотека: http://www.surina.net/soundtouch/ – Geobits

3

Вы можете использовать atempo filter в 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 
+0

Но использование этого сокращает первоначальную продолжительность звука. Что делать, если я хочу сохранить первоначальную продолжительность вместе с измененным шагом? – VickyS

+0

На окнах с версией N-77870, по крайней мере, вам нужно указать фильтр слов, как в 'ffmpeg -i input.wav -filter: a atempo = 1,25 output.wav' – User

Смежные вопросы