mpd 経由でシステムオーディオをストリーミングする

mpd 経由でシステムオーディオをストリーミングする

私は mpd を使用して、 経由で音楽を携帯電話 (Hi-Fi に接続) にストリーミングしますhttp

しかし、これは私の mpd データベース内の曲にしか機能しません。ブラウザで曲を再生したい場合が多く、それも 経由でストリーミングしたいのですmpd

スピーカーの代わりpulse audioに出力をルーティングする方法はありますか?mpd

答え1

mpdはpulseaudio入力ソースを受け入れないので、pulseaudioを直接ルーティングする方法はありません。を通してmpd。

しかし、gstreamer とちょっとした工夫で、あなたが達成したいことはまだ可能です。私は数年前にこれを達成しました。

私が書いたこのプログラムこれは、この図の「Gstreamer パイプライン スクリプト」コンポーネントを実装します。

ストリーム図 http://tiyukquellmalz.org/sean/stream.svg

図をまとめると、次のようになります。

  • mpd はディスクから音楽ファイルを読み取り、デコードし、module-null-sinkpulseaudio タイプのオーディオ出力に「再生」します。
  • コンピューター上で実行してサウンドを出力するその他のプログラム (Adobe Flash、gnome シェルのビープ音、Web ブラウザーなど) も、そのオーディオ出力をmodule-null-sinkpulseaudio に送信します (pulseaudio はシステムのデフォルトのオーディオ デバイスになっています)。
  • module-null-sink出力には.monitorソースがあり、ヌルシンクにプッシュされたオーディオを取得し、入力デバイス(マイクなど)であるかのようにそれを「キャプチャ」して戻すことができます。
  • Pulseaudio は、mpd、Web ブラウザー、その他 pulseaudio を使用するすべてのものを含む、コンピューター全体のすべてのオーディオ プログラムのソフトウェア ミキシングをオンザフライで実行します。
  • 私が作成したプログラムtribblifyは、GStreamer を使用して、mpd とシステム上の他のプログラムの両方の混合オーディオを含む pulseaudio null シンク モニター オーディオをキャプチャし、MP3 エンコードを実行してから、shoutcast / icecast サーバーにストリーミングします。tribblify基本的には「ストリーミング ソース」になります。
  • プログラムtribblifyは、mpd が再生中のオーディオのタグを変更すると自動的に検出し、それらのタグをシャウトキャスト ストリームにプッシュします。
  • 同じコンピュータまたは別のコンピュータ上にある icecast または shotcast サーバーは、接続されているすべてのクライアントに結果をストリーミングします。

答え2

はい、ここで重要なのは ALSA ループバック機能です。まず、ALSA でループバック デバイスを有効にする必要があります。これは、PulseAudio ボリューム コントロールに入力デバイス (および出力デバイス) として表示されます。

sudo modprobe snd_aloop

このデバイスは mpd サーバーに追加できます。

mpc add alsa://hw:1,1

ここで、hw:1,1はループバック入力デバイスであり、次のコマンドでリストできます。aplay -l

次に、http 出力プラグインmpdの場合、次の例のようになります。/etc/mpd.conf

 audio_output {
    type            "httpd"
    name            "My HTTP Stream"
    encoder         "vorbis"          # optional, vorbis or lame
    port            "8000"
    bind_to_address "192.168.1.38"               # optional, IPv4 or IPv6
    quality         "5.0"                   # do not define if bitrate is d$
#   bitrate         "128"                   # do not define if quality is d$
    format          "44100:16:1"
    max_clients     "0"                     # optional 0=no limit
 }  

以上です。ボリュームコントロールの再生タブで、オーディオソースのループバックデバイスを選択します。
最後に、httpd URL アドレスを使用して、宛先ポイントで VLC またはその他のストリームレンダラーを使用できます。http://192.168.1.38:8000

関連情報