Kombinieren Sie drei Live-Audiostreams zu einem Live-Audiostream

Kombinieren Sie drei Live-Audiostreams zu einem Live-Audiostream

Ich habe drei Live-Audio-Feeds, die ich als einen kombinierten Audio-Stream weiterleiten möchte. Ich möchte alle drei Live-Audio-Feeds gleichzeitig hören, aber meine Heimverbindung ist durch die Daten pro Monat begrenzt, sodass ich lieber nur von einer Quelle streamen möchte. Deshalb möchte ich stattdessen einen Feed von meinem externen Server verwenden.

Ist es möglich, etwas wie ffmpeg zu verwenden, um dies zu erreichen, oder wäre es komplizierter?

Ich kann den Live-Audio-Feed in vielen Formaten empfangen. Die unterstützten Formate, in die gestreamt werden kann, sind Windows Media Player, Real Player, iTunes, Winamp, Web Player und ein Java Web Player. Es wird also kein Problem sein, einen unterstützten Feed-Typ zu erhalten.

Hier ist ein Beispiel für zwei der Feeds:

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

Ich möchte diese zu einem Feed zusammenfassen, also schalte ich ein aufhttp://example.com/radiostreamund ich hätte einen Stream. Der Feed liegt derzeit im MPEG-Format vor und die Ausgabe im exakt gleichen Codec ist völlig problemlos.

Antwort1

Das Mischen der beiden Kanäle ist trivial. Hier ist ein Test, der die beiden Kanäle mischt und eine Datei 500 Sekunden lang aufzeichnet, wobei der amixFilter verwendet wird:

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

Dies ist einfacher als der amergeFilter, der ebenfalls von der Kanalanordnung (links, rechts, Mitte usw.) abhängig ist. Obwohl dies auch funktionierte, wurde die Kanalverteilung ziemlich stark verändert:

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

Streaming:

ffmpeg kann auf zwei Arten streamen.

  1. Direkt
  2. Zu einem anderen Server, beispielsweise Icecast

Sehendieser Leitfadenfür mehr Details.

Verwenden Sie Icecast mit dem Kennwort für die Quelle „hackme“ (Standard) und Port 8000 (Standard) als einem der Ports und starten Sie es mit:

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

Natürlich wäre Ihrs:

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

Verwenden Sie dann amergezum Füttern von 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

Öffnen Sie VLC und stellen Sie eine Verbindung zum Streamen her.http://192.168.1.128:8000/radio(Das ist meine zugewiesene IP, Sie können localhost:8000/radio verwenden).

Sie können die beiden Streams hören. Mit amerge (anstatt amix) werden die beiden Streams nach links und rechts geschwenkt und sind leicht zu unterscheiden.

Zum Mischen von 3 Strömen verwenden Sie den amixFilter:

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

verwandte Informationen