Объедините три прямых аудиопотока в один прямой аудиопоток

Объедините три прямых аудиопотока в один прямой аудиопоток

У меня есть три прямых аудиопотока, которые я хочу ретранслировать как один объединенный аудиопоток. Я хотел бы слушать все три прямых аудиопотока одновременно, но мое домашнее соединение ограничено данными в месяц, поэтому я предпочитаю трансляцию только из одного источника. Вот почему я хочу вместо этого использовать один канал с моего внешнего сервера.

Можно ли для этого использовать что-то вроде ffmpeg или это будет сложнее?

Я могу получить живую аудиоподачу во многих форматах. Поддерживаются следующие форматы потоковой передачи: Windows Media Player, Real Player, iTunes, Winamp, Web Player и Java Web Player, поэтому получение поддерживаемого типа потока не будет проблемой.

Вот пример двух каналов:

  • http://audio2.radioreference.com/342138428
  • http://audio7.radioreference.com/333108723

Я бы хотел объединить их в один канал, например, я бы настроился наhttp://example.com/radiostreamи у меня будет поток. Сейчас поток в формате MPEG, и выводить его обратно в том же кодеке совершенно нормально.

решение1

Смешивание двух каналов — тривиальная задача. Вот тест, который смешивает два канала и записывает файл на 500 секунд, используя amixфильтр:

ffmpeg -i http://audio2.radioreference.com/342138428 -i http://audio7.radioreference.com/333108723 -filter_complex amix=inputs=2 -t 500 a.mp3

Это проще, чем amergeфильтр, который также зависит от расположения каналов (левый, правый, центральный и т. д.). Так что, хотя это тоже работало, оно довольно сильно панорамировало каналы:

ffmpeg -i http://audio2.radioreference.com/342138428 -i http://audio7.radioreference.com/333108723 -filter_complex amerge=inputs=2 -t 500 a.mp3

Трансляция:

ffmpeg может осуществлять потоковую передачу двумя способами.

  1. Напрямую
  2. На другой сервер, например, icecast

Видетьэто руководствоБольше подробностей.

Используя icecast, с паролем для источника «hackme» (по умолчанию) и портом 8000 (по умолчанию) в качестве одного из портов, запустите с помощью:

icecast -c /usr/local/etc/icecast.xml

Конечно, ваш ответ будет:

icecast -c /path/to/your/icecast.xml

Затем используйте amergeдля подачи в icecast:

ffmpeg -i http://audio2.radioreference.com/342138428 -i http://audio7.radioreference.com/333108723 -filter_complex amerge=inputs=2 -f mp3 icecast://source:hackme@localhost:8000/radio

Откройте VLC и подключитесь к потоковой передаче.http://192.168.1.128:8000/радио(Это мой назначенный IP, вы можете использовать localhost:8000/radio).

Вы можете услышать 2 потока. С объединением (а не миксом) 2 потока будут панорамированы влево-вправо и их легко различить.

Для смешивания 3 потоков используйте amixфильтр:

ffmpeg -i http://audio2.radioreference.com/342138428 -i http://audio7.radioreference.com/333108723 -i <third stream> -filter_complex amix=inputs=3 -f mp3 icecast://source:hackme@localhost:8000/radio

Связанный контент