繁体   English   中英

使用 Node.js 广播直播音频服务器

[英]Broadcast Live Streaming Audio Server using Node.js

我的目标是使用 JavaScript 和 node.js 服务器为后端部分和 HTML/CSS/JavaScript 为前端部分创建一个托管在 localhost 上的网络广播电台。 我的收音机将很简单,目标是创建一个服务器,该服务器将不断播放一首歌曲(或使用 .mp3 格式的许多歌曲),以便可以从每个连接的客户端使用它们。

流媒体部分并不难。 到目前为止,我正在努力的部分是实现同时向所有消费者“广播”传输。 下图更好地解释了我的想法:

广播传输

有没有人有一个代码示例,所以我可以很容易地理解它,同时实现它以供我的项目使用?

有没有人遇到过类似的情况?

这正是 SHOUTcast/Icecast 和兼容服务器所做的。 您基本上只需要将音频数据复制到每个客户端。

您可以使用普通的 HTTP 作为流协议。 客户不需要知道或关心他们正在直播。 一个简单的音频元素可以工作:

<audio src="https://stream.example.com/some-stream" preload="none" controls></audio>

在服务器端,您确实需要确保发送的 stream 以这样一种方式对齐,即客户端可以直接拿起并播放它。 好消息是,对于原始 MP3 和 ADTS(通常包装 AAC)流,它们播放所需的所有数据都在每一帧中,因此您可以从任意 position 中“针落”,stream,客户端将计算出来。

在您的 Node.js 应用程序中,它看起来有点像这样:

Input Stream -> Buffer(s) -> Clients HTTP Responses

事实上,如果你愿意,你甚至可以删除缓冲区部分。 当数据来自编解码器时,您可以将其写入所有客户端。 缓冲区对于确保快速开始播放很有用。 大多数客户端将需要一些缓冲数据来嗅探 stream 类型和兼容性,以及填充自己的播放缓冲区以实现流畅的流式传输。

这就是它的全部!

我正在寻找这个,虽然我想将我的节点服务器部署到 firebase。 你过得怎么样??

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM