web-dev-qa-db-ja.com

3つのライブオーディオストリームを1つのライブオーディオストリームに結合します

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形式であり、まったく同じコーデックで出力することはまったく問題ありません。

1
ComputerLocus

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つの方法でストリーミングできます。

  1. 直接
  2. たとえばicecastなどの別のサーバーへ

詳細については、 このガイド を参照してください。

ソースのパスワードを「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
2
Rajib