[WebRTC导读] VideoRender 视频渲染类
相关的类 VideoRender,VideoRenderCallback,IncomingVideoStream,VideoRenderDirect3D9,D3D9Channel
VideoRender 本类为rtc提供的用来在某个特定窗口渲染yuv数据的类,本类可以在ios,android,linux,windows上渲染图像,同时提供了在窗口上绘制文本,设置各种背景图的功能。
Windows 下 VideoRender 会生成一个 VideoRenderDirect3D9 的实例,这个实例里面包含了多个 D3D9Channel(std::map<int, D3D9Channel*> _d3dChannels),这个通道就继承自VideoRenderCallback, 这些channel通过流id来区分, AddIncomingRenderStream 会调用CreateChannel创建新的channel
此处涉及到的设计模式和技术点,我会单独找一篇文章来说明设计模式在webrtc中的应用
- 创建
通过传入一个窗口的句柄来确认在哪个窗口绘制
/** Create a video render module object** id - unique identifier of this video render module object* window - pointer to the window to render to* fullscreen - true if this is a fullscreen renderer* videoRenderType - type of renderer to create*/static VideoRender* CreateVideoRender(const int32_t id,void* window,const bool fullscreen,const VideoRenderType videoRenderType =kRenderDefault);
- 输入
AddIncomingRenderStream 通过该方法来获取输入渲染窗口的接口,然后调用VideoRenderCallback::RenderFrame方法输入yuv数据
video_render_callback_ = renderModule->AddIncomingRenderStream(stream_id_, 0, 0.0f, 0.0f, 1.0f, 1.0f);
video_render_callback_->RenderFrame(stream_id_, videoFrame);
VideoRenderCallback为绘制图像的接口,VideoRender中包含一个这样的接口
class VideoRenderCallback {public:virtual int32_t RenderFrame(const uint32_t streamId,const VideoFrame& videoFrame) = 0;
protected:virtual ~VideoRenderCallback() {}
};
IncomingVideoStream 一个输入图像队列类,只有在VideoReceiveStream中使用最大的功能是通过时间戳排序,它继承自VideoRenderCallback,每一个VideoRender中都包含一个IncomingVideoStream
欢迎访问本人的小站 xsnip.cn
[WebRTC导读] VideoRender 视频渲染类相关推荐
- 鸿蒙开源全场景应用开发——视频渲染
背景 上期内容提到过,已开发的家庭合影美颜相机应用是同时基于鸿蒙和安卓设备的,我们将对其4个功能模块即视频编解码.视频渲染.通讯协议和美颜滤镜进行拆分讲解.上一期内容中,我们对视频编解码模块的实现原理 ...
- webrtc视频引擎之video_render(视频渲染)介绍
此部分为webrtc视频渲染显示,代码结构如下: 其实此部分代码与<webrtc视频引擎之vedio_capture_module介绍>的代码结构一样 1,图中能够直接看到的.h和.cc文 ...
- webrtc 渲染_WebRTC 开发(六)摄像头采集与视频渲染分析
在上一篇文章 WebRTC 开发(五)编译与运行 Mac 工程 中,我们编译了 WebRTC 的工程 AppRTCMobile,也看到了 App 启动后的初始界面.本文基于 WebRTC M76 ,将 ...
- c++封装webrtc sdk(二):在sdk端实现webrtc视频渲染
如果你用过其它厂商的rtc sdk,比如声网,在渲染视频时,只需要传入窗口句柄,即可进行渲染,接口如下: 初始化本地视图 virtual int setupLocalVideo(const Vid ...
- WebRTC 系列之视频辅流
导读:近几年,实时音视频领域越来越热,业界很多音视频引擎都是基于 WebRTC 进行实现的.本文主要介绍 WebRTC 在视频辅流上的需求背景以及相关技术实现. 文|陶金亮 网易云信资深客户端开发工程 ...
- Flutter 2 渲染原理和如何实现视频渲染
声网Agora跨平台开发工程师卢旭辉带来了<Flutter2 渲染原理和如何实现视频渲染>的主题分享,本文是对演讲内容的整理. 本次分享主要包括 3 个部分: Flutter2 概览. F ...
- 百家号基于AE的视频渲染技术探索
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nm0WWHSi-1657593629762)(https://p3-juejin.byteimg.com/tos-cn- ...
- android log 码率,webrtc之Android视频质量提升:保帧率降码率
前言: 我们的产品是在一款跑着Android系统的特定芯片上使用webrtc开发的一个视频通话业务,当前的情况是在网络正常的情况下帧率也比较低,弱网环境下适应能力较差.基于此,我了解了webrtc A ...
- iOS音视频开发十三:视频渲染,用 Metal 渲染
本系列文章通过拆解采集 → 编码 → 封装 → 解封装 → 解码 → 渲染流程并实现 Demo 来向大家介绍如何在 iOS/Android 平台上手音视频开发. 这里是第十三篇:iOS 视频渲染 De ...
最新文章
- cpu安装_CPU是AMD的,老台式电脑可以加装固态硬盘安装Win10系统吗?
- 论坛报名 | 李开复张亚勤陆奇共论AI时代的创业
- php 昨天开始时间_php日期处理显示:昨天、今天、本周、上一月等时间结点数据...
- html div实时监听,jquery实时监听div高度变化
- 机器学习(八)Apriori算法学习
- MFC创建MDI程序一个Doc对应多个View
- 黑鲨重装计算机安装无法继续,黑鲨装机大师常见问题详解
- 一篇文章教会你用Python爬取淘宝评论数据(写在记事本)
- 回旋共振 有效质量的测量
- 最长公共子序列(LCS) 过程图解
- K8s 中 iptables 和ipvs 的理解
- Excise_Thread2
- 微信点击按钮关闭当前页面回到微信对话窗口
- 今日心得:七条人生箴言
- Vue学习笔记01-基础部分
- 2021年3月PHP免费自学最全教程来了
- 数字IC设计---反相器相关知识
- 延时加载技术-----仿照手机淘宝网站图片延时加载
- 统计学 计算机论文发表,数学科学学院博士生史册在统计学顶级期刊
《Annals of Statistics》上发表论文...
- 启动Zookeeper报错:Error contacting service. It is probably not running.
热门文章
- Android中GPUImage的简单使用
- 如何在简中版 MathType 安装过程中,就能输入产品密匙?
- Prometheus+SpringBoot应用监控全过程详解
- 2007年高考北京满分作文:沉默的父爱
- 如何打造自己的PoC框架-Pocsuite3-框架篇
- JavaScript焦点处理(获取焦点focus()、失去焦点blur())
- Python第三方库巧用,制作图片验证码只需三行代码
- 三维建模初学者学习方法及资料
- 笔记本系统触摸板只能移动鼠标不能点击使用的解决方案
- js增加透明css样式,如何配置透明发光的骚气 vscode