Pulseaudio

通過 mpd 流式傳輸系統音頻

  • December 13, 2019

我使用 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-sinkpulseaudio(它已成為系統的預設音頻設備) .
  • module-null-sink輸出有一個源,它可以讓您將.monitor被推送到空接收器的音頻並將其“擷取”回來,就好像它是一個輸入設備(如麥克風)一樣。
  • Pulseaudio 對整個電腦上的所有音頻程序執行軟體混合,包括 mpd、網路瀏覽器以及使用 pulseaudio 的所有其他程序。
  • 我編寫的tribblify程序使用 GStreamer 來擷取 pulseaudio null sink monitor 音頻,其中包含 mpd 以及系統上任何其他程序的混合音頻;執行 MP3 編碼;然後將其流式傳輸到廣播/冰播伺服器。tribblify本質上成為“流媒體源”。
  • tribblify程序會自動檢測 mpd 何時更改正在播放的音頻的標籤,並將這些標籤推送到直播流中。
  • 可以在同一台電腦或不同電腦上的icecast 或shoutcast 伺服器將結果流式傳輸到所有連接的客戶端。

引用自:https://unix.stackexchange.com/questions/73736