1.一种指定多元素的视频连麦方法,其特征在于,所述方法包括:
S1、选定直播场景中的任意元素,记录所选元素ID,存放至一个ID链表;
S2、根据连麦视频指定的宽高,使用当前直播视频的D3D设备对象创建一个连麦视频渲染目标;
S3、在当前直播视频流的单个元素纹理绘制及图像处理完成的位置增设第一回调函数;在所述直播视频流一个场景内所有元素纹理都处理完成的位置增设第二回调函数;
S4、当所述第一回调函数触发时,根据所述ID链表判断所述单个元素是否需要共享到连麦视频中,若需要,则将所述单个元素作为选定元素并进入步骤S5;
S5、新建一个局部渲染目标对象指针,用所述对象指针缓存所述直播视频的渲染目标地址;
S6、调用D3D设备的SetRenderTarget函数,将所述连麦视频渲染目标设置到当前D3D设备对象中,在所述连麦视频渲染目标中绘制所述选定元素的纹理;
S7、调用D3D设备的SetRenderTargets函数,将所述直播视频的渲染目标重新设置到当前D3D设备对象中;
S8、针对每个直播元素在所述第一回调函数中执行步骤S4至S7;
S9、当所有的选定元素完成绘制时,触发所述第二回调函数,将所述连麦视频渲染目标中的最终纹理的图像数据发送至连麦对象,实现指定元素的视频连麦。
2.根据权利要求1所述一种指定多元素的视频连麦方法,其特征在于,步骤S1所述任意元素包括摄像头、桌面截屏、文字、图片。
3.根据权利要求1所述一种指定多元素的视频连麦方法,其特征在于,所述步骤S3中,所述直播视频流一个场景内所有元素纹理都处理完成的位置即为调用D3D设备的EndScene函数来结束一帧的绘制的位置。
4.根据权利要求1所述一种指定多元素的视频连麦方法,其特征在于,所述步骤S4中,根据所述ID链表判断所述单个元素是否需要共享到连麦视频中的具体方式为:识别所述单个元素的ID,若所述单个元素ID在所述ID链表中,则所述单个元素需要共享到连麦视频中。
5.根据权利要求1所述一种指定多元素的视频连麦方法,其特征在于,步骤S6中所述选定元素的纹理通过所述第一回调函数获取,并且获取的元素纹理为已经经过各种图像处理的纹理。
6.根据权利要求1所述一种指定多元素的视频连麦方法,其特征在于,所述步骤S8的具体过程为:针对每个直播元素在所述第一回调函数中执行步骤S4,若所述直播元素为选定元素,则继续执行步骤S5、S6、S7。
7.根据权利要求1所述一种指定多元素的视频连麦方法,其特征在于,所述步骤S9中,所述当所述第二回调函数触发时,所述第二回调函数通知连麦视频流所有元素纹理绘制完成的消息。
8.一种指定多元素的视频连麦装置,其特征在于,所述装置包括:
选定模块:选定直播场景中的任意元素,记录所选元素ID,存放至一个ID链表;
创建模块:根据连麦视频指定的宽高,使用当前直播视频的D3D设备对象创建一个连麦视频渲染目标;
设置模块:在直播视频流的单个元素纹理绘制及图像处理完成的位置增设第一回调函数;在所述直播视频流一个场景内所有元素纹理都处理完成的位置增设第二回调函数;
判断模块:当所述第一回调函数触发时,根据所述ID链表判断所述单个元素是否需要共享到连麦视频中,若需要,则将所述单个元素作为选定元素并进入绘制模块;
绘制模块:用于新建一个局部渲染目标对象指针,用所述对象指针缓存所述直播视频的渲染目标地址;调用D3D设备的SetRenderTarget函数,将所述连麦视频渲染目标设置到当前D3D设备对象中,在所述连麦视频渲染目标中绘制所述选定元素的纹理;调用D3D设备的SetRenderTargets函数,将所述直播视频的渲染目标重新设置到当前D3D设备对象中;
发送模块:用于当所有的元素完成绘制时,触发所述第二回调函数,将所述连麦视频渲染目标中的最终纹理的图像数据发送至连麦对象,实现指定元素的视频连麦。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至
7中任一项所述指定多元素的视频连麦方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述指定多元素的视频连麦方法的步骤。