当前位置: 首页 > news >正文

建设网站前需要的市场分析厦门购买域名以后搭建网站

建设网站前需要的市场分析,厦门购买域名以后搭建网站,网站代码字体变大,百度域名登录WebRTC音频01 - 设备管理 WebRTC音频 02 - Windows平台设备管理 WebRTC音频 03 - 实时通信框架(本文) WebRTC音频 04 - 关键类 WebRTC音频 05 - 音频采集编码 一、前言#xff1a; 前面介绍了音频设备管理#xff0c;并且以windows平台为例子#xff0c;介绍了ADM相关的类…WebRTC音频01 - 设备管理 WebRTC音频 02 - Windows平台设备管理 WebRTC音频 03 - 实时通信框架(本文) WebRTC音频 04 - 关键类 WebRTC音频 05 - 音频采集编码 一、前言 前面介绍了音频设备管理并且以windows平台为例子介绍了ADM相关的类以及必须用到的重要API本文我们分析下在一个音视频呼叫过程中音频是如何参与其中的都有哪些成员参与其中。 二、呼叫时序图 先回顾下总体呼叫流程由大到小分析避免看半天代码不知道自己在哪儿 可以看出呼叫过程中先要创建非常重要的类PeerConnection接着进行媒体协商最后选择进行p2p或者turn这条路我们现在要分析这个过程中音频要做哪些事这件事分别是在上面总流程的哪个位置。 三、音频数据流转 我们先猜想下整个过程中应该做什么是不是下图这样 标注红色的就是我们关心的。 四、具体到每个音频模块 初始化阶段图中粉色线 这个流程之前分析过从Session层开始创建一个会话就会创建一个PeerConnection然后就是创建音频引擎接着创建ADMadm创建过程中会创建AudioDeviceModuleGeneric的具体对象windows平台就是AudioDeviceWindowsCore下文本人全都写AudioDeviceModuleGeneric就代表AudioDeviceWindowsCore 数据发送阶段图中绿色线 AudioDeviceModuleGeneric对象从麦克风采集到数据并送给AudioDeviceBuffer等待发送交给AudioTransport模块处理这里面主要是经过 AudioProcess 模块进行3A处理)交给Call模块的 AudioSendStream交给ACM模块的Encoder进行编码交给网络模块Transport进行发送 数据接收阶段图中蓝色线 从网络模块接收数据送给Call模块的队列Queue进行缓存慢慢交给AudioReceiveStream进行处理交给ACM模块的Decoder进行解码解码之后交给在AudioReceiveStream模块继续缓存起来因为音频播放有一个单独的线程扬声器会定时来缓存里面取而不是我们主动送 数据播放阶段图中黑色线 AudioDeviceModuleGeneric对象调用AudioDeviceBuffer相关接口获取数据调用AudioTransport相关接口获取数据这里面主要是混音模块Mixer可能同时获得1路或者多路音频混成1路AudioTransport调用1个或者多个AudioReceiveStream中分别取出一定长度的PCM数据webrtc就是10ms上面三步完成了调用之后数据就会按照AudioReceiveStream-AudioTransport(mixer)-AudioDeviceBuffer-AudioDeviceModuleGeneric对象最终通过扬声器播放出来 总结 Call模块是每个session一个ADM和AudioTransport里面的AudioProcess、Mixer都是全局唯一的因为Mixer这种是瞬间处理的不保存数据因此所有的Call模块共用同一个使用AudioState可以理解成引擎层的上下文管理AudioTransport和ADM虽然增加了一层但是对于上层使用媒体引擎的人来说就非常简单了我只需要和AudioState打交道 五、类图 关键模块类图如下 adm_就是AudioDeviceModule对音视频设备进行管理比如从麦克风采集音频让扬声器播放数据 encoder_factory_音频编码器工厂创建编码器时候使用 decoder_factory_音频解码器工厂 audio_mixer_音频混音器比如将多路输入流混成一路送给扬声器播放 apm_专门用来处理3A问题 audio_state_表面看是音频状态管理实则为音频流的管理 send_codecs音频编码器管理 recv_codecs音频解码器管理 channelsWebRtcMediaVoiceChannel的集合一个对应SDP中一个m行 六、关键类对象创建时机 在我们开始呼叫音视频通话时候点击PeerConnectionClient弹出的connect按钮时候会调用Conductor::InitializePeerConnection()先看看引擎的初始化时机 然后再看看PeerConnectionFactory::Create再调用 ConnectionContext::Create而ConnectionContext::Create之后主要干了下面几件事情 备注 发现扬声器和麦克风ADM这一层逻辑基本一致。 并且adm和AudioDeviceWindowsCore中间还有个传话筒AudioDeviceModuleImpl我没有画出来就是转手调用AudioDeviceWindowsCore而已。 向adm注册一个回调 audio_state()-audio_transport用于接收将来产生的音视频数据 创建PeerConnectionFactory之前已经创建了四个编解码器的Factory 构造Denpendenices的时候就实例化了一个APM模块并进行了初始化 我们前面构造的MediaEngineDependencies是PeerConnectionFactoryDependencies的一个成员使用media_engine保存里面主要是三大线程、call_factory、media_engine看后面代码这个主要是接收MediaDependecies的 然后是创建音视频引擎 引擎创建好之后对引擎做一些必要的初始化CreateModularPeerConnectionFactory 对pc_factory进行初始化 BasicNetworkManager主要是管理网卡的BasicPacketSocketFactory也就是Socekt工厂主要创建各种各样的socket创建ChannelManager它是连接编解码器的同时会调用Init里面会调用media_engine-Init来初始化之前创建的媒体引擎 七、总结 本文主要是介绍了音频各个模块在整个呼叫过程中所处的角色以及何时创建创建时机、创建的什么样类图主要从总体分析如果要具体到每个类后续会根据业务场景再做分析比如采集过程中用到哪几个类具体调用哪个函数等等关注我不迷路 扫描关注最早拿到一手资源
http://www.hkea.cn/news/14354521/

相关文章:

  • 毕业设计做企业门户网站自学网网站
  • wordpress文404东莞推广seo关键词排名优化
  • 品牌宣传型网站响应式网站 翻译
  • 做电影下载网站赚钱建筑网官网大全
  • 泉州网站建设技术托管苏州做网页
  • 成都建设网站设计wordpress 分类信息 主题
  • 阜阳微商城网站建设品牌广告文案
  • 毕业设计网站方向展览馆展示设计
  • 做网站需要什么电脑配置校园推广是什么工作
  • 网站备案去哪投资公司怎么运作
  • 成都哪里有做网站建设的光电工程东莞网站建设
  • wordpress加支付搜索引擎优化报告
  • 百度关键词优化多少钱一年网站 seo 优化 效果
  • 深圳宝安网站设计公司腰椎间盘突出压迫神经腿疼怎么治疗
  • 做一个网站能挣多少钱免费字体设计网站
  • 怎么自己建网站赚钱钟表网站开发背景文章
  • 互助网站建设国外网站国内备案
  • 上海网站备案信息企业网站主页模板
  • 用什么自己做网站吗电脑网站上的电影怎么下载
  • 2345网址导航中国最好的网址站百度网站链接提交页面
  • 张家界公司网站建设兰州新闻最新消息
  • 注册公司网站流程高邮市城乡建设局网站
  • 免费咨询男科seo是什么服务器
  • 网站制作厦门公司网站套餐到期啥意思
  • 胶南做公司网站wordpress动画效果
  • 长春建设局网站wordpress没有小工具
  • 设计师去哪个网站找工作专业的集团网站建设
  • 重庆网站建设的培训机构在珠海注册公司需要什么资料
  • 做外贸最好的网站微网站购物网站
  • 平价建网站now9999网站提示建设中