1

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

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

Я могу получить живое аудио в разных форматах. Поддерживаемые потоковые приложения поддерживают проигрыватель Windows Media, 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 ответ1

2

Смешивание двух каналов тривиально. Вот тест, который смешивает два канала и записывает файл в течение 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

Streaming:

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 и подключитесь к stream- http://192.168.1.128:8000/radio (это мой назначенный ip, вы можете использовать localhost:8000/radio).

Вы можете услышать 2 потока. С помощью amerge (а не amix) 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .