リモートでホストされているCentOSシステムにオーディオプロセッサを設定しています。オーディオプロセッサ自体はコマンドラインベースであり、作成者と会話した後、ライブ.WAVストリームを読み取って機能し、ライブ.WAVも出力すると説明しました。
今、基本的に私の状況は次のとおりです。
このボックスには、ポート 8000 を使用する Shoutcast サーバーがあります。 ShoutcastサーバーはDJの接続ポイントです。
リスナーが接続するポート 8002 を使用するセカンダリ Shoutcast サーバーがあります。
その間に、このオーディオ処理ツールを使用したいと思います。ポート 8000 で最初の Shoutcast サーバーに接続し、オーディオを処理してから、ポート 8002 でサーバーに送信する必要があります。
残念ながら、ソフトウェア作成者は、プログラムは自分でこれを行うことができないと言いました。彼はまた、私が正しい方法を使用する限り、このような状況が可能であると言いました。彼は次のように提案した。
- 着信ストリームを読み込んでパイプするコマンドラインツール:
- --decodeオプションを使用してMP3データをWAV形式(例:lame)に抽出するコマンドラインツール。
- ステレオツール。
- WAVをMP3データ(lameなど)にエンコードするプログラムです。
- ストリーミングプログラムはパイプを入力として扱うことができます。
ステップ1+2は「arecord」に置き換えることができます。 「jack」を使用して、着信ストリームを受信して再生するプログラムに接続します。
同様に、ステップ5は「aplayer」に置き換えることができ、「jack」を使用してオーディオデータをストリーミングするプログラムに接続します。
私は彼が言うことを理解しています。 GUIとサウンドカードを含むローカルインストールを使用すると、これを行うことができます。
主に私が苦しんでいるのは入力と出力です。
答え1
私は以前にこれを行ったこともないし、テストしたこともなく、文書を徹底的に読んだこともありません。私はオーディオ/ビデオコーデックやそのような分野の専門家ではありません。したがって、これは他の人が詳細に説明できることを望む「この作品」ガイドに近いです。
私はトリックを実行するためのいくつかのツールを見つけるためにGoogleでクイック検索を実行しました(コマンドラインツールのみ)。
- 最初のサーバーからオーディオストリームを取得します。
icecream
- mp3からwavへのデコード:
lame
- あなたのステレオツール:(
stereo_tool
ホーム) - wavからmp3へのエンコード:
lame
- オーディオを2番目のサーバーに転送します。
ezstream
これは Shoutcast サーバーが同じボックスで実行されていると仮定します。stream2stream.sh
最初のスクリプトを読み、処理し、2番目のスクリプトに渡すシェルスクリプトを作成します。
$ chmod 750 stream2stream.sh
$ cat stream2stream.sh
#!/bin/bash
icecream --stdout http://localhost:8000 | \
lame -decode - - | \
stereo_tool | \
lame --preset cbr 128 -r -s 44.1 --bitwidth 16 - - | \
ezstream -c ~/ezstream.xml
ezstream
独自のエンコード/デコード手順を定義することで、再エンコードがサポートされます。したがって、上記のスクリプトはおそらく不要であり、それezstream
自体で十分です。しかし、私はこのツールに精通していないので、この実装では最も簡単な設定を使用します。
$ cat ~/ezstream.xml
<ezstream>
<url>http://localhost:8002</url>
<sourcepassword>hackme</sourcepassword>
<format>MP3</format>
<filename>stdin</filename>
<stream_once>1</stream_once>
<svrinfoname>My Stream</svrinfoname>
<svrinfourl>http://yoursiteurl/</svrinfourl>
<svrinfogenre>YourGenre</svrinfogenre>
<svrinfodescription>This is a stream description</svrinfodescription>
<svrinfobitrate>128</svrinfobitrate>
<svrinfoquality>2.0</svrinfoquality>
<svrinfochannels>2</svrinfochannels>
<svrinfosamplerate>44100</svrinfosamplerate>
<!-- Disallow the server to advertise the stream on a public YP directory: -->
<svrinfopublic>0</svrinfopublic>
</ezstream>
lame と ezstream のパラメータを必要に応じて調整する必要があります。 nohupを使用するか、画面上でスクリプトを実行できます。
screen -AmdS stereotool stream2stream.sh