通过webRTC播放全质量MP3流媒体

通过webRTC播放全质量MP3流媒体,mp3,html5-audio,webrtc,audio-streaming,p2p,Mp3,Html5 Audio,Webrtc,Audio Streaming,P2p,我对webRTC从用户机器上对mp3音频进行P2P直播的能力感兴趣。我发现的唯一一个例子是:来自本文 但是,正如您所看到的,接收端的音频质量非常差(45kb\sec),有没有办法获得全质量的MP3流+处理每个用户端的流数据的能力(如使用均衡器调整频率) 如果无法通过webRTC实现,是否有其他flash插件或无插件选项 编辑:我还偶然发现这个“shoutcast”的家伙,宣称他们正在使用webRTC来提供包括mp3流在内的高质量广播。如果是,那么如何支持?WebRTC支持2种音频编解码器:OPU

我对webRTC从用户机器上对mp3音频进行P2P直播的能力感兴趣。我发现的唯一一个例子是:来自本文

但是,正如您所看到的,接收端的音频质量非常差(45kb\sec),有没有办法获得全质量的MP3流+处理每个用户端的流数据的能力(如使用均衡器调整频率)

如果无法通过webRTC实现,是否有其他flash插件或无插件选项


编辑:我还偶然发现这个“shoutcast”的家伙,宣称他们正在使用webRTC来提供包括mp3流在内的高质量广播。如果是,那么如何支持?

WebRTC支持2种音频编解码器:OPUS(最大比特率510kbit/s)和G711。你坚持使用OPUS,它是2012年推出的现代且更有前途的产品

webrtc-mp3-stream中的主文件已过期2年(2013年7月18日)。我在代码中找不到OPUS首选项,所以可能通过G711运行演示

webrtc-mp3-stream演示程序执行编码工作(mp3作为媒体源),然后通过webrtc通过UPD/TCP传输数据。我不认为你们需要在接收端把它解码成MP3,这太过分了。只要试着让OPUS使webrtc-mp3-stream的代码更为最新即可


请参阅以使OPUS能够看到差异。

我是unltd.fm的创始人

伊戈尔帕夫洛夫是对的,但我不能对答案发表评论。我们还通过WebRTC使用OPUS(立体声/48Khz)编解码器。 使用webaudio对mp3(或任何其他音频格式)进行解码,然后在OPUS中对其进行编码是一个不错的选择。你“只是”需要强迫SDP谈判使用OPUS


您应该给我们发送一封电子邮件,这样您就可以节省50分;)

您可以通过将SDP设置为立体声并增加maxaveragebitrate来提高流的质量:

let answer = await peer.conn.createAnswer(offerOptions);
answer.sdp = answer.sdp.replace('useinbandfec=1', 'useinbandfec=1; stereo=1; maxaveragebitrate=510000');
await peer.conn.setLocalDescription(answer);
这将输出一个SDP字符串,如下所示:

a=fmtp:111 minptime=10;useinbandfec=1; stereo=1; maxaveragebitrate=510000
这为立体声提供了520kb/s的潜在最大比特率,即每个通道260kps。实际比特率取决于网络速度和信号强度


您可以在以下位置阅读更多关于其他可用SDP属性的信息:

好吧,我假设您可以从一台服务器上进行流式传输,该服务器将mp3代码转换为OPUS,然后在客户端获得流式传输后,您可以使用音频API执行所有您想要的操作。但是,如果我们谈论的是peer2peer,即此处不涉及任何服务器?WebRTC根本不直接支持MP3流。mp3在通过peerconnection发送之前,必须在某个时候由某人转码到PCMA/U或Opus。我唯一能想到的是某种数据连接,通过mp3发送数据块,然后在另一端重新编译播放,但我不确定这是否可行。我建议您将标题稍微更改为“通过webRTC播放的全质量mp3流”(添加一个空格),以便更好地进行搜索。完成,谢谢你的建议。Opus听起来很有趣(unltd上的那些家伙也在参考它),目前我无法花一天的时间研究webrtc-mp3流示例,更改编解码器并测试所有可能的可能性,我需要,这似乎是一条正确的道路,因此,由于赏金不能再等一周了,我接受你的答案,赏金是你的,谢谢。哦,等等,我可以接受答案,不赏金,哦,那么,如果你不介意的话,我会再等几天,谁知道,也许会出现一些有趣的回复,如果不是,那么赏金是你的)顺便问一下,现在有什么理由,这就不可能将这个作品流传送到两边的web audio api,并通过一个api进行操作?我不确定我是否完全理解你,你能告诉我们“将这个作品流传送到两边的web audio api,并通过一个api进行操作”下的意思吗?也许我的英语背叛了我,或者我不了解音频api,但我的意思是使用web audio api在一边播放初始音频文件,使用相同的api在另一边播放接收到的OPUS流+使用api处理音频数据的能力,特别是制作图形均衡器e.t.C因为某种原因我没有想到,但是看到你的直接回复真的很高兴,谢谢)那50分已经厌倦了坐在一个地方。所有这些WebRTC运动都非常吸引人,音频流已经完全可能,而且似乎全尺寸p2p视频流正在进行中。啊,未来……遗憾的是,我们还没有气垫船。