3 つのライブ オーディオ フィードがあり、これらを 1 つの結合されたオーディオ ストリームとして再ブロードキャストしたいと考えています。これらの 3 つのライブ オーディオ フィードをすべて同時に聞きたいのですが、自宅の接続は月ごとのデータに制限されているため、1 つのソースからのみストリーミングしたいと考えます。そのため、代わりにオフサイト サーバーからの 1 つのフィードを使用したいと考えています。
これを実現するために ffmpeg のようなものを使用することは可能ですか、それともそれよりも複雑でしょうか?
ライブ オーディオ フィードはさまざまな形式で取得できます。ストリーミングがサポートされているのは、Windows Media Player、Real Player、iTunes、Winamp、Web Player、および Java Web Player なので、サポートされているフィード タイプを取得することは問題になりません。
以下に 2 つのフィードの例を示します。
http://audio2.radioreference.com/342138428
http://audio7.radioreference.com/333108723
これらを1つのフィードにまとめたいので、http://example.com/radiostreamストリームが得られます。フィードは現在 MPEG 形式ですが、まったく同じコーデックで出力してもまったく問題ありません。
答え1
2 つのチャンネルをミックスするのは簡単です。以下は、フィルターを使用して 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
ストリーミング:
ffmpeg は 2 つの方法でストリーミングできます。
- 直接
- 別のサーバー(例えばicecast)へ
見るこのガイド詳細については。
icecast を使用し、ソースのパスワードを「hackme」(デフォルト)、ポートの 1 つをポート 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 つのストリームを聞くことができます。 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