Аудио водяные знаки с Ruby, PHP или Python - PullRequest
4 голосов
/ 07 октября 2011

Я работаю над проектом, в котором мне нужно постобработать несколько аудиофайлов в различных форматах.

  • Во-первых, файлы необходимо преобразовать в формат .WAV.
  • Во-вторых, в зависимости от их длины мне необходимо вставлять короткий звуковой водяной знак через определенные промежутки времени в каждый из новых файлов .WAV.

Первая часть проста, используя кодировщик LAME cli. вторая часть - вот где это трудно - я попробовал несколько методов с LAME и FFmpeg, но не могу заставить его работать.

Сценарий выполняется как задание cron в фоновом режиме, поэтому доступен полный доступ к клиенту.

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

Ответы [ 2 ]

1 голос
/ 07 октября 2011

Если вы готовы пойти по маршруту Python, я бы предложил SciPy , который может считывать файлы WAV в массивы NumPy:

from scipy.io import wavfile
fs, data = wavfile.read(filename)

(официальная документация ) содержит подробности).

Для удобного управления звуками можно использовать процедуры манипулирования массивом NumPy .

scipy.io.wavfile, а затем записать файл обратно вформат WAV.

SciPy и NumPy являются инструментами общенаучных данных.Больше музыкально-ориентированных модулей Python можно найти на официальном сайте.

1 голос
/ 07 октября 2011

Это становится сложным. На самом деле вам нужно микшировать аудио, что, насколько мне известно, невозможно с FFMPEG. Другая проблема, с которой вы столкнетесь, - это потеря качества, если вы возьмете MP3, конвертируете его в WAV, чтобы вы могли работать с ним, и перекодируйте его обратно в MP3.

Я думаю, вы можете использовать Sox для этого: http://sox.sourceforge.net/

Сначала используйте FFMPEG для декодирования аудио в WAV, регулируя частоту дискретизации и битовую глубину по мере необходимости.

Затем вызовите soxmix: http://linux.die.net/man/1/soxmix

...