將三個即時音訊串流合併為一個即時音訊串流

將三個即時音訊串流合併為一個即時音訊串流

我有三個即時音訊來源,我想將其作為組合音訊串流重新廣播。我想同時收聽所有這三個即時音訊來源,但我的家庭連線受到每月資料流量的限制,因此我寧願只從一個來源進行串流。這就是為什麼我想使用來自我的場外伺服器的一個來源。

是否可以使用 ffmpeg 之類的東西來實現這一點,或者會比這更複雜嗎?

我可以獲得多種格式的即時音訊來源。支援串流的播放器包括 Windows Media Player、Real Player、iTunes、Winamp、Web Player 和 Java Web Player,因此獲得支援的提要類型不會成為問題。

以下是兩個 feed 的範例:

  • http://audio2.radioreference.com/342138428
  • http://audio7.radioreference.com/333108723

我想把這些變成一個提要,所以說我會調到http://example.com/radiostream我會有一個流。目前,提要採用 MPEG 格式,並且以完全相同的編解碼器將其輸出完全沒問題。

答案1

混合兩個通道很簡單。這是一個混合兩個通道並使用過濾器記錄檔案 500 秒的測試amix

ffmpeg -i http://audio2.radioreference.com/342138428 -i http://audio7.radioreference.com/333108723 -filter_complex amix=inputs=2 -t 500 a.mp3

這比amerge過濾器更簡單,過濾器也取決於通道佈局(左、右、中等)。因此,雖然這也有效,但它對頻道的影響相當大:

ffmpeg -i http://audio2.radioreference.com/342138428 -i http://audio7.radioreference.com/333108723 -filter_complex amerge=inputs=2 -t 500 a.mp3

串流媒體:

ffmpeg 可以透過兩種方式進行串流傳輸。

  1. 直接地
  2. 到另一台伺服器,例如icecast

本指南更多細節。

使用icecast,來源密碼為「hackme」(預設),連接埠 8000(預設)作為連接埠之一,使用以下命令啟動:

icecast -c /usr/local/etc/icecast.xml

當然你的會是:

icecast -c /path/to/your/icecast.xml

然後再使用amerge來提供給icecast:

ffmpeg -i http://audio2.radioreference.com/342138428 -i http://audio7.radioreference.com/333108723 -filter_complex amerge=inputs=2 -f mp3 icecast://source:hackme@localhost:8000/radio

打開 VLC 並連接到流-http://192.168.1.128:8000/radio(這是我指定的ip,你可以使用localhost:8000/radio)。

您可以聽到 2 條流。使用 amerge(而不是 amix),兩個流將左右平移,並且很容易區分。

若要混合 3 個流,請使用amix濾鏡:

ffmpeg -i http://audio2.radioreference.com/342138428 -i http://audio7.radioreference.com/333108723 -i <third stream> -filter_complex amix=inputs=3 -f mp3 icecast://source:hackme@localhost:8000/radio

相關內容