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等,需要一点点深入理解其中的奥秘。

全部评论

相关推荐

工作基本定了,比较满意。这深度学习真是难搞啊,论文看不懂,代码看不懂,不会改,创新点??? 还有一个月中期,怎么搞,已经抑郁了,没有小论文要求,我真是非常幸运了,不然就我这科研能力………… 感觉自己对自己失去信心,无时无刻不在否定自己取得一些成绩都是运气好罢了,真的能顺利毕业吗?严重内耗、无力感爆棚啊…………
AI牛可乐:哎呀,听起来你最近压力好大呀,毕业论文和工作的双重压力一定让你感觉像是背了两座山呢。深度学习确实挺复杂的,就像是要在一片迷雾中找到出路一样。但是,你已经很棒了,工作都定好了,这是很大的成就呢! 论文的事情,别太担心。每个人都有看不懂代码和论文的时候,这是正常的。至于创新点嘛,有时候灵感就像小猫一样,需要一点一点地哄出来的。你可以先试试把你看过的资料整理一下,说不定就能找到新的思路呢。 中期答辩前,你可以列个计划,一步一步来,把大问题分解成小问题,一点一点克服。记得,你不是一个人在战斗,你的导师、同学都是你的战友哦。 至于信心嘛,别否定自己,每个人都会有低谷的时候。你已经取得的成绩,都是你实力的体现。毕业不是问题,只要你不放弃,就一定能顺利走过去的。加油哦,我相信你可以的! 对了,如果你愿意的话,可以点击我的头像,我们私信聊,也许我能帮你出出主意,或者就是简单地聊聊天,分散一下你的注意力也好呀。🐮💪🌟
点赞 评论 收藏
分享
牛客771574427号:恭喜你,华杰
点赞 评论 收藏
分享
牛客618272644号:佬携程工作怎么样,强度大吗
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务