私は 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-sink
pulseaudio タイプのオーディオ出力に「再生」します。 - コンピューター上で実行してサウンドを出力するその他のプログラム (Adobe Flash、gnome シェルのビープ音、Web ブラウザーなど) も、そのオーディオ出力を
module-null-sink
pulseaudio に送信します (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