簡體   English   中英

如何創建實時音頻流隊列?

[英]How to create a real-time audio streaming queue?

所以我正在考慮創建一個節點應用程序,用戶可以將歌曲添加到“隊列”,並將歌曲實時播放給所有用戶,但在環顧四周之后,我不太清楚如何實現這一目標。

我讀到的主要文章就是這篇文章: http//pedromtavares.wordpress.com/2012/12/28/streaming-audio-on-the-web-with-nodejs/

看起來像一個icecast服務器可以很好地工作,但有沒有辦法讓節點將歌曲推送到由icecast服務器播放的隊列? 到目前為止,我所閱讀的內容似乎是管理播放歌曲的唯一方法是指定播放列表或手動添加歌曲,並告訴服務器在隊列中沒有歌曲時不播放任何內容似乎也是一個潛在的問題。

我最近一直在做一個類似的項目。 我的解決方案是使用nodeshoutlibshout的節點綁定)將音頻數據從Node發送到Icecast。

查看流媒體示例 您可以像這樣使用它:

function playSong(){
    // Choose next song
    const nextSong = "./song.mp3";
    const fileStream = new FileReadStream(nextSong, 65536);
    const shoutStream = fileStream.pipe(new ShoutStream(shout));

    shoutStream.on('finish',playSong);
}

playSong()

這將在歌曲之后創建循環和播放歌曲。

提示:將icecast.xml源超時增加到約30秒。 在某些情況下,默認情況下,由於歌曲具有“快速啟動”,因此歌曲的開頭具有較低的比特率(開始播放更快),因此它會導致流結束。

我做了一個Gist,還有一個例子: https//gist.github.com/Cretezy/3623fecb1418e21b5d1f77db50fc7e07

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM