Webキャストからオーディオストリームデータを読み取り、一時ファイルにプッシュします。

Webキャストからオーディオストリームデータを読み取り、一時ファイルにプッシュします。

リモートでホストされているCentOSシステムにオーディオプロセッサを設定しています。オーディオプロセッサ自体はコマンドラインベースであり、作成者と会話した後、ライブ.WAVストリームを読み取って機能し、ライブ.WAVも出力すると説明しました。

今、基本的に私の状況は次のとおりです。

このボックスには、ポート 8000 を使用する Shoutcast サーバーがあります。 ShoutcastサーバーはDJの接続ポイントです。

リスナーが接続するポート 8002 を使用するセカンダリ Shoutcast サーバーがあります。

その間に、このオーディオ処理ツールを使用したいと思います。ポート 8000 で最初の Shoutcast サーバーに接続し、オーディオを処理してから、ポート 8002 でサーバーに送信する必要があります。

残念ながら、ソフトウェア作成者は、プログラムは自分でこれを行うことができないと言いました。彼はまた、私が正しい方法を使用する限り、このような状況が可能であると言いました。彼は次のように提案した。

  1. 着信ストリームを読み込んでパイプするコマンドラインツール:
  2. --decodeオプションを使用してMP3データをWAV形式(例:lame)に抽出するコマンドラインツール。
  3. ステレオツール。
  4. WAVをMP3データ(lameなど)にエンコードするプログラムです。
  5. ストリーミングプログラムはパイプを入力として扱うことができます。

ステップ1+2は「arecord」に置き換えることができます。 「jack」を使用して、着信ストリームを受信して​​再生するプログラムに接続します。

同様に、ステップ5は「aplayer」に置き換えることができ、「jack」を使用してオーディオデータをストリーミングするプログラムに接続します。

私は彼が言うことを理解しています。 GUIとサウンドカードを含むローカルインストールを使用すると、これを行うことができます。

主に私が苦しんでいるのは入力と出力です。

ベストアンサー1

私は以前にこれを行ったこともないし、テストしたこともなく、文書を徹底的に読んだこともありません。私はオーディオ/ビデオコーデックやそのような分野の専門家ではありません。したがって、これは他の人が詳細に説明できることを望む「この作品」ガイドに近いです。

私はトリックを実行するためのいくつかのツールを見つけるためにGoogleでクイック検索を実行しました(コマンドラインツールのみ)。

  1. 最初のサーバーからオーディオストリームを取得します。icecream
  2. mp3からwavへのデコード:lame
  3. あなたのステレオツール:(stereo_toolホーム)
  4. wavからmp3へのエンコード:lame
  5. オーディオを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

おすすめ記事