Pulseaudio
通過 mpd 流式傳輸系統音頻
我使用 mpd 將音樂通過
http
.然而,這只適用於我的 mpd 數據庫中的歌曲。我經常想在我的瀏覽器中播放一些東西,並且也希望它能夠被流式傳輸
mpd
。有沒有辦法將
pulse audio
輸出路由到mpd
揚聲器而不是揚聲器?
mpd 不接受 pulseaudio 輸入源,因此無法直接通過mpd 路由 pulseaudio。
但是,在 gstreamer 和一些聰明的幫助下,您想要完成的事情仍然是可能的。幾年前我做到了這一點。
我編寫了這個程序,它實現了這個圖的“Gstreamer Pipeline Script”組件:
流圖 http://tiyukquellmalz.org/sean/stream.svg
總結一下這張圖,下面是發生的事情:
- mpd 從磁碟上讀取音樂文件,對其進行解碼,然後將它們“播放”
module-null-sink
為 pulseaudio 類型的音頻輸出。- 您想在電腦上執行的任何其他輸出聲音的程序——Adobe Flash、來自 gnome shell 的嗶聲、網路瀏覽器等也將其音頻輸出發送到
module-null-sink
pulseaudio(它已成為系統的預設音頻設備) .module-null-sink
輸出有一個源,它可以讓您將.monitor
被推送到空接收器的音頻並將其“擷取”回來,就好像它是一個輸入設備(如麥克風)一樣。- Pulseaudio 對整個電腦上的所有音頻程序執行軟體混合,包括 mpd、網路瀏覽器以及使用 pulseaudio 的所有其他程序。
- 我編寫的
tribblify
程序使用 GStreamer 來擷取 pulseaudio null sink monitor 音頻,其中包含 mpd 以及系統上任何其他程序的混合音頻;執行 MP3 編碼;然後將其流式傳輸到廣播/冰播伺服器。tribblify
本質上成為“流媒體源”。- 該
tribblify
程序會自動檢測 mpd 何時更改正在播放的音頻的標籤,並將這些標籤推送到直播流中。- 可以在同一台電腦或不同電腦上的icecast 或shoutcast 伺服器將結果流式傳輸到所有連接的客戶端。