WebRTC[11]-WebRTC如何通过SDP信息设置音频码率

目录

前言

正文


前言

WebRTC除了通过API接口控制某些参数外,还能通过SDP信息进行音视频参数的控制,特别是在进行JS SDK开发时,这种情况是非常普遍的。

《WebRTC工作原理精讲》系列-总览

正文

本文以WebRTC的M76版本为例进行介绍。

首先来看一段SDP信息(只包含音频信息):

v=0
o=- 8275923203002055919 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio video
a=msid-semantic: WMS 6a6d1509-69e0-4fc2-b447-5b4391f9ad69_STS
m=audio 9 UDP/TLS/RTP/SAVPF 111 103 9 102 0 8 105 13 110 113 126
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:QLMT
a=ice-pwd:V0cOn+fDmd49138wk42548PU
a=ice-options:trickle
a=fingerprint:sha-256 6B:CD:36:F6:8D:F1:CB:E7:44:0A:E9:3B:D4:A1:A4:F3:7F:93:99:4C:EF:4A:3A:A2:91:6A:7F:57:50:49:04:1B
a=setup:actpass
a=mid:audio
b=AS:64
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=sendonly
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 nack
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1;maxaveragebitrate=64000

说到音频码率控制,我们可以关注一下参数 “b=AS” ,WebRTC底层就是通过解析 b=AS 参数来设置音频码率的,当然也可以不设置,这样会使用默认值,一般默认值是32kbps。

SDP信息传递到底层时,会被反序列化,这时就会用到一个方法:

// src/pc/webrtc_sdp.h // Deserializes the passed in SDP string to a JsepSessionDescription. // message - SDP string to be Deserialized. // jdesc - The JsepSessionDescription deserialized from the SDP string. // error - The detail error information when parsing fails. // return - true on success, false on failure. // 解析SDP信息的方法 bool SdpDeserialize(const std::string& message,
                    JsepSessionDescription* jdesc,
                    SdpParseError* error);

方法的具体实现:

   
    

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

WebRTC工作原理精讲 文章被收录于专栏

WebRTC 作为当下最热门的实时音视频通讯框架,涉及非常多的过程,比如采集、编码、组包、发包、传输、收包、丢包重传、解封装、解码、音视频同步、渲染等,同时还包括很多功能特性,比如ANS、AGC、AEC,REMB、GCC、CNG、FEC、PLI、SVC等,需要一点点深入理解其中的奥秘。

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-10 15:58
投个小米提前批试试水,先投一个岗位看看形势,不行就再沉淀一下投第二个岗位,莫辜负
Java抽象带篮子:我嘞个骚刚,已经开始研发6g了吗
投递小米集团等公司7个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 11:35
程序员小白条:话太多,没实力和学历,差不多回答回答就行了,身份地位不一样
点赞 评论 收藏
分享
05-30 12:03
山西大学 C++
offer来了我跪着...:不是骗子,等到测评那一步就知道为啥这么高工资了
点赞 评论 收藏
分享
Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务