[发明专利]在线视频的视频帧生成方法、装置、存储介质及设备有效
申请号: | 201810398279.1 | 申请日: | 2018-04-28 |
公开(公告)号: | CN110213636B | 公开(公告)日: | 2023-01-10 |
发明(设计)人: | 向晨宇 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | H04N21/431 | 分类号: | H04N21/431;H04N21/4788;H04N21/488;H04N21/44;H04N21/2187;G06F9/50 |
代理公司: | 北京三高永信知识产权代理有限责任公司 11138 | 代理人: | 刘映东 |
地址: | 518057 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 在线视频 视频 生成 方法 装置 存储 介质 设备 | ||
1.一种在线视频的视频帧生成方法,其特征在于,用于客户端中,所述方法包括:
接收视频数据流,所述视频数据流中包含不同类型的子数据流,每种子数据流具有不同的流标识;所述视频数据流至少包括视频子数据流、弹幕子数据流和广告子数据流;
对于每种子数据流,创建一个任务线程和一个任务队列,并将所述子数据流中属于同一视频帧的数据段作为一个任务添加到所述任务队列中,其中每个任务的数据段是在所述子数据流中按固定时长截取的,并且不同任务的数据段分别对应所述子数据流中的不同时段;
对于存在任务的任务队列所对应的任务线程,利用所述任务线程对所述任务进行处理,得到处理结果,所述处理包括:解封装和解码;
利用各个任务线程将各自得到的所述处理结果发送给渲染线程;
利用所述渲染线程将各个处理结果添加到视频缓冲区中;
将所述客户端对应的进程的绘制上下文赋值给所述渲染线程;
利用所述渲染线程按照所述处理结果被添加到所述视频缓冲区中的顺序,依次从所述视频缓冲区中读取一个处理结果;
对于每个处理结果,利用所述渲染线程创建纹理,并将所述纹理添加到所述绘制上下文中,对所述处理结果进行渲染,得到中间数据,将所述中间数据添加到所述纹理中,得到渲染结果;
通知图形处理器GPU对各个渲染结果进行渲染,得到视频帧,
其中当存在至少两个任务线程同时向所述渲染线程发送对应于同一视频帧的处理结果时,所述利用所述渲染线程将各个处理结果添加到视频缓冲区中,包括:
利用所述渲染线程接收对应于同一视频帧的至少两个处理结果;
利用所述渲染线程确定每个处理结果对应的子数据流的处理优先级;
利用所述渲染线程根据所述处理优先级进行轮询,将每次轮询得到的一个处理结果添加到所述视频缓冲区中,从而所述至少两个处理结果按所述处理优先级从高到底的顺序添加到所述视频缓冲区中。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到后台运行指令时,通知所述渲染线程停止轮询。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到后台运行指令时,利用所述渲染线程清除所述绘制上下文中的纹理数据,将所述绘制上下文赋值给所述进程。
4.根据权利要求1所述的方法,其特征在于,所述通知图形处理器GPU对各个渲染结果进行渲染,包括:
在每次得到一个视频帧对应的各个渲染结果时,向图形处理器GPU发送开始渲染指令,所述开始渲染指令用于指示所述GPU开始渲染所述视频帧对应的各个渲染结果,得到所述视频帧。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
当接收到后台运行指令时,向图形处理器GPU发送停止渲染指令,所述停止渲染指令用于指示所述GPU停止对所述渲染结果进行渲染。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810398279.1/1.html,转载请声明来源钻瓜专利网。