webRTC:如何告诉Opus编解码器使用超宽带/全频段
我正在开发一个webRTC web应用程序,到目前为止,它运行得非常好。例如,我还没有弄明白如何告诉Opus编解码器(强制)使用“全频段” 将编解码器设置为510 kHz比特率很容易:webRTC:如何告诉Opus编解码器使用超宽带/全频段,webrtc,opus,Webrtc,Opus,我正在开发一个webRTC web应用程序,到目前为止,它运行得非常好。例如,我还没有弄明白如何告诉Opus编解码器(强制)使用“全频段” 将编解码器设置为510 kHz比特率很容易: desc.sdp=desc.sdp.replace(/a=mid:audio\r\n/g,'a=mid:audio\r\nb=AS:510\r\n'); 但是有没有办法告诉Opus使用哪个乐队呢?指定乐队并没有那么糟糕。对于opus,您只需指定最大速率功能,然后让它从那里运行。默认情况下,OPUS将达到其最大容
desc.sdp=desc.sdp.replace(/a=mid:audio\r\n/g,'a=mid:audio\r\nb=AS:510\r\n');
但是有没有办法告诉Opus使用哪个乐队呢?指定乐队并没有那么糟糕。对于opus,您只需指定最大速率功能,然后让它从那里运行。默认情况下,OPUS将达到其最大容量(48000,又称全频段) 另外,请记住,无论您指定什么样的捕获速率,rtp时钟速率都必须为48000 为发送方指定16kHz(又称宽带)的最大捕获和回放速率 双向全波段立体声
m=audio 54312 RTP/AVP 101
a=rtpmap:101 opus/48000/2
a=fmtp:101 stereo=1; sprop-stereo=1
如果要指定首选波段,您最关心的选项有:
- maxplaybackrate:关于所需最大输出采样率的提示 接收器能够以Hz为单位进行渲染
- sprop maxcapturerate:关于最大输入采样率的提示 发送方可能会提供的信息
- 注:8千赫
- MB:12千赫
- WB:16千赫
- SWB:24千赫
- FB:48 kHz//webrtc中的编解码器默认值
Post脚本,所有这些都取决于webrtc实现,以及它是否真正关心SDP中指定的内容,以及它是否实际影响opus编码/解码。我已经注意到(在过去,它很可能已经改变)Firefox中的实现并不关心SDP中的内容,只是默认地做它想要做的事情 非常感谢。我希望这些设置能消除我经常听到的音频伪影(以及音乐中的节奏变化)。您知道是否有更好的/标准的方法来修改sdp字符串,而不是查找和替换某些部分吗?@ArminHierstetter,我知道有一些重量较轻的sdp解析器可以工作,但在本地设置并发送sdp之前替换sdp中的字符串是我所知道的在WebRTC的浏览器实现中执行此操作的唯一方法technologies@ArminHierstetter,您还可以通过确保使用恒定比特率(也可以在SDP中设置,请参阅所提到的rfc)来防止比特率下降或上升。那么星号中的opus 8000/1呢?星号中是否有可能出现窄带宽?@Avanibadheka这个问题与星号无关,如果你有星号特定的问题…你应该发布一个新问题
m=audio 54312 RTP/AVP 101
a=rtpmap:101 opus/48000/2
a=fmtp:101 stereo=1; sprop-stereo=1