透過 mpd 串流系統音頻

透過 mpd 串流系統音頻

我使用 mpd 透過 .mpd 將音樂串流傳輸到我的手機(連接到 Hi-Fi)http

然而,這僅適用於我的 mpd 資料庫中的歌曲。我經常想在我的瀏覽器中播放一些東西,並且mpd也希望能夠透過它進行串流傳輸。

有沒有辦法將輸出路由pulse audio到揚聲器mpd而不是揚聲器?

答案1

mpd 不接受脈衝音訊輸入來源,因此沒有直接的方法來路由脈衝音訊透過MPD。

然而,借助 gstreamer 和一些聰明才智,您想要完成的事情仍然是可能的。我幾年前就做到了這一點。

我寫這個程式它實現了該圖的“Gstreamer Pipeline Script”組件:

流程圖 http://tiyukquellmalz.org/sean/stream.svg

總結一下該圖,會發生以下情況:

  • mpd 從磁碟上讀取音樂文件,對其進行解碼,然後將它們「播放」到module-null-sinkpulseaudio 類型的音訊輸出中。
  • 您想要在電腦上運行的任何其他輸出聲音的程式 - Adob​​e Flash、來自 gnome shell 的蜂鳴聲、Web 瀏覽器等也會將其音訊輸出發送到module-null-sinkpulseaudio(它已成為系統的預設音頻裝置) .
  • 輸出module-null-sink有一個.monitor來源,它可以讓您將被推送到空接收器的音訊並將其「捕獲」回來,就像它是輸入裝置(如麥克風)一樣。
  • Pulseaudio 對整台電腦上的所有音訊程式(包括 mpd、Web 瀏覽器以及使用 Pulseaudio 的其他所有程式)進行動態軟體混合。
  • 我編寫的程式tribblify使用 GStreamer 捕獲pulseaudio null sink 監視器音頻,其中包含 mpd 以及系統上任何其他程式的混合音頻;執行MP3編碼;然後將其串流傳輸到shoutcast/icecast 伺服器。tribblify本質上成為「串流媒體來源」。
  • tribblify程式會自動偵測 mpd 何時更改正在播放的音訊的標籤,並將這些標籤推送到shoutcast 串流中。
  • Icecast 或shoutcast 伺服器可以位於同一台電腦或不同的電腦上,將結果串流傳輸到所有連接的用戶端。

答案2

是的 - 這裡的關鍵是 ALSA 環回功能。因此,首先您需要在 ALSA 中啟用環回設備,該設備將作為輸入設備(以及輸出設備)出現在 PulseAudio 音量控制中。

sudo modprobe snd_aloop

然後可以將該設備新增至 mpd 伺服器:

mpc add alsa://hw:1,1

其中 hw:1,1 是環回輸入設備,可以使用指令列出aplay -l

那你需要配置一個http輸出插件為議員。下面的例子看起來像是/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

相關內容