Как смешать / объединить 2 mp3-файла в php?

1

Я не использую инструмент для присоединения 2 mp3 файлов в 1.

Первым файлом (фоновым) будет звук (музыка, отправленная пользователем), файл seccond будет машинным (google) говорящим текстом, который был отправлен (пользователем).

В выходе мне нужен один mp3 файл, с фоновой музыкой и текстом говорящего робота.

Я не могу найти какое-либо отдельное решение для PHP, например, какую-то библиотеку или что-то в этом роде, только команды shell atc.

Так есть некоторые библиотеки?

или существует некоторая уникальная команда оболочки, которая работает на всех ОС для объединения файлов?

Или как мне выполнить задачу?

  • 0
    Технически говоря, сырые mp3-файлы могут быть просто объединены. например, cat file1.mp3 file2.mp3 > joined.mp3 . Теги id3 могут внести некоторые изломы в работу, а также mp3-in-wav и еще много чего.
  • 0
    конкатенированный означает 1 файл, а после него заканчивается 2 файла, верно? (здесь нет родного английского) .. Мне нужно, чтобы оба mp3-файла воспроизводились одновременно, фоновый том 30% и текстовый робот Speach vol 100% ..
Показать ещё 2 комментария
Теги:
mp3

2 ответа

1
Лучший ответ

Исходя из этого вопроса, вы должны иметь возможность устанавливать FFMPEG на свой сервер (надеюсь, не общий хост?) И использовать

//Reduce background volume, assuming it input2.mp3
shell_exec('ffmpeg -i input2.mp3 -af "volume=0.3" backround.wav');
//Merge the two
shell_exec('ffmpeg -y -i input1.mp3 -i background.wav -filter_complex amerge -c:a libmp3lame -q:a 4 output.mp3');

Затем вы можете просто output.mp3. Если это выполняется PHP, работающим под apache (или другим веб-хостом вместо CLI), вам нужно убедиться, что пользователь ваших www-data имеет доступ на чтение к входным файлам и записывает доступ к выходному каталогу.

Весь ваш временный вывод, например фон, должен быть сохранен как .wav и преобразован обратно в .mp3 для окончательного вывода. Повторное сжатие звука на каждом шаге может привести к очень плохому окончательному результату.

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

-1

Вы можете просто сделать это

file_put_contents('combined.mp3',
file_get_contents('file1.mp3') .
file_get_contents('file2.mp3'));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню