将音频流式传输到多个 Web 浏览器

Posted

技术标签:

【中文标题】将音频流式传输到多个 Web 浏览器【英文标题】:Stream audio to multiple web browsers 【发布时间】:2019-11-03 02:12:21 【问题描述】:

我正在尝试在我的 linux 服务器上播放一些音频并将其流式传输到多个 Internet 浏览器。我有一个环回设备,我指定为 ffmpeg 的输入。然后 ffmpeg 通过 rtp 流式传输到 WebRTC 服务器(Janus)。它可以工作,但发出的声音很可怕。

这是我用来通过 rtp 从 ffmpeg 流式传输到 janus 的命令:

nice --20 sudo ffmpeg -re -f alsa -i hw:Loopback,1,0 -c:a libopus -ac
1 -b:a 64K -ar 8000 -vn -rtbufsize 250M -f rtp rtp://127.0.0.1:17666

WebRTC 服务器 (Janus) 要求音频编解码器是 opus。如果我尝试制作 2 声道音频或提高采样率,则流会变慢或听起来更糟。 “nice”命令是赋予进程更高的优先级。

【问题讨论】:

Janus 端的音频配置是什么? ffmpeg(rtp源)与Janus网关之间的协商如何?有没有SDP参数。 sdp 在 janus 服务器配置文件中设置:janus.conf.meetecho.com/docs/streaming.html 当您在 ffmpeg 端更改参数(通道或比特率或采样频率)时,您是否也在更改 janus 端的参数。在 rtp 中没有协商,您需要对其进行硬编码。 是的,sdp 是硬编码在 janus conf 中的。如果我改变一个,我会同时改变它们。 建议使用默认的 sdp/janus conf 并相应地配置您的 ffmpeg。你能分享一下 janus conf /sdp 以供参考吗? 【参考方案1】:

使用 gstreamer 代替 ffmpeg 效果很好,听起来很棒!

这是我在 CentOS 7 上使用的 cmd:

sudo gst-launch-1.0 alsasrc device=hw:Loopback,1,0 ! rawaudioparse ! audioconvert ! audioresample ! opusenc ! rtpopuspay ! udpsink host=127.0.0.1 port=14365

【讨论】:

以上是关于将音频流式传输到多个 Web 浏览器的主要内容,如果未能解决你的问题,请参考以下文章

将录制的音频从浏览器流式传输到服务器

将音频记录从浏览器流式传输到服务器?

将音频从浏览器流式传输到具有特定 MIME 类型的 node.js 服务器

将麦克风从客户端浏览器流式传输到远程服务器,并将音频实时传递到 ffmpeg 以与第二个视频源结合

将音频流式传输到多个 AirPlay 设备

Node.js如何流式传输音频文件