![將三個即時音訊串流合併為一個即時音訊串流](https://rvso.com/image/1438655/%E5%B0%87%E4%B8%89%E5%80%8B%E5%8D%B3%E6%99%82%E9%9F%B3%E8%A8%8A%E4%B8%B2%E6%B5%81%E5%90%88%E4%BD%B5%E7%82%BA%E4%B8%80%E5%80%8B%E5%8D%B3%E6%99%82%E9%9F%B3%E8%A8%8A%E4%B8%B2%E6%B5%81.png)
我有三個即時音訊來源,我想將其作為組合音訊串流重新廣播。我想同時收聽所有這三個即時音訊來源,但我的家庭連線受到每月資料流量的限制,因此我寧願只從一個來源進行串流。這就是為什麼我想使用來自我的場外伺服器的一個來源。
是否可以使用 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 可以透過兩種方式進行串流傳輸。
- 直接地
- 到另一台伺服器,例如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