zl程序教程

您现在的位置是:首页 >  其他

当前栏目

webrtc 源码分析视频编码器创建,编码的过程

编码源码 分析 创建 过程 视频 Webrtc 编码器
2023-09-14 09:12:42 时间

接下来:10-8
附录:对于视频引擎来说重要的不是视频引擎的类,而是WebRtcVideoChannel,所有的数据流传都是以WebRtcVideoChannel为核心进行逻辑组织的。
创建WebRtcVideoChannel的过程:
请添加图片描述

一、编码器如何拿到视频分发器的数据
二、视频编码器的创建
三、总略图:包含视频编码器的编码以及把编码好的数据传递给上层回调

一、编码器如何拿到视频分发器的数据
视频编码器是如何获取分发器获得的视频数据呢,当视频编码器注册进分发器后,通过VideoStreamEncoder::OnFrame(…)这个函数来获取分发器给的视频帧数据。
通过PostTask(…)创建任务,并将任务插进队列,这个任务是一个匿名函数,主要调用MaybeEncodeVideoFrame(incoming_frame, post_time.us())函数,下面图片中这个函数名字拼写有误,这个函数在src/video/video_stream_encoder.cc中。
请添加图片描述 二、视频编码器的创建
那么在MaybeEncodeVideoFrame中做了什么呢:
下图的if(…)是检查有没有创建编码器,如果没有就调用ReconfigureEncoder()创建。编码器是什么时候开始创建的呢,是在第一帧数据来的时候开始创建的。
如果已经创建好编码器则调用EncodeV