通过webRTC提供全高质量的MP3流媒体

时间:2015-02-10 19:09:03

标签: mp3 html5-audio webrtc audio-streaming p2p

我对webRTC能够从用户的机器直播P2P直播音频感兴趣。我发现的唯一例子就是:https://webrtc-mp3-stream.herokuapp.com/来自http://servicelab.org/2013/07/24/streaming-audio-between-browsers-with-webrtc-and-webaudio/

但是,正如您所看到的,接收方的音质相当差(45kb /秒),有没有办法获得全高质量的MP3流+操纵此流数据的能力(如调整在每个用户的两侧使用均衡器的频率?

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

编辑:我也偶然发现了这个' shoutcast kinda'伙计们http://unltd.fm/宣称他们正在使用webRTC提供高质量的无线电广播,包括流媒体播放。如果是,那怎么样?

3 个答案:

答案 0 :(得分:3)

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

webrtc-mp3-stream中的主要文件已过时2年(2013年7月18日)。我在代码中找不到OPUS首选项,因此可能通过G711运行demo。

webrtc-mp3-stream演示执行编码工作(MP3作为媒体源),然后通过WebRTC通过UPD / TCP传输数据。我认为您不需要在接收器端将其解码为MP3,这将是一种矫枉过正。只是尝试启用OPUS使webrtc-mp3-stream的代码更新。

请参阅Is there a way to choose codecs in WebRTC PeerConnection?以启用OPUS以查看差异。

答案 1 :(得分:2)

我是unltd.fm的创始人。

igorpavlov是对的,但我无法评论答案。我们还在WebRTC上使用OPUS(Stereo / 48Khz)编解码器。 使用webaudio解码mp3(或任何其他音频格式),然后在OPUS中编码它是要走的路。你“只是”需要强制SDP谈判才能使用OPUS。

您应该向我们发送一封电子邮件,您可以保存50分;)

答案 2 :(得分:0)

您可以通过将SDP设置为立体声并增加最大平均比特率来提高流的质量:

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属性的信息:https://tools.ietf.org/html/rfc7587