У меня есть три прямых аудиопотока, которые я хочу ретранслировать как один объединенный аудиопоток. Я хотел бы слушать все три прямых аудиопотока одновременно, но мое домашнее соединение ограничено данными в месяц, поэтому я предпочитаю трансляцию только из одного источника. Вот почему я хочу вместо этого использовать один канал с моего внешнего сервера.
Можно ли для этого использовать что-то вроде 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 может осуществлять потоковую передачу двумя способами.
- Напрямую
- На другой сервер, например, 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