3つのライブオーディオフィードがあり、それらを1つの結合されたオーディオストリームとして再ブロードキャストしたいと思います。これら3つのライブオーディオフィードすべてを一度に聴きたいのですが、自宅の接続は1か月あたりのデータによって制限されているため、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形式であり、まったく同じコーデックで出力することはまったく問題ありません。
2つのチャネルを混合するのは簡単です。 amix
フィルターを使用して、2つのチャネルを混合し、ファイルを500秒間記録するテストを次に示します。
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つの方法でストリーミングできます。
詳細については、 このガイド を参照してください。
ソースのパスワードを「hackme」(デフォルト)、ポートの1つとしてポート8000(デフォルト)を使用してicecastを使用すると、次のコマンドを使用して起動します。
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/radio (これは私の指定したIPです。localhost:8000/radioを使用できます)。
2つのストリームを聞くことができます。 (混合ではなく)amergeを使用すると、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