我使用 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-sink
pulseaudio 類型的音訊輸出中。 - 您想要在電腦上運行的任何其他輸出聲音的程式 - Adobe Flash、來自 gnome shell 的蜂鳴聲、Web 瀏覽器等也會將其音訊輸出發送到
module-null-sink
pulseaudio(它已成為系統的預設音頻裝置) . - 輸出
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