一种直播数据处理方法、装置、设备及存储介质与流程
未命名
09-09
阅读:82
评论:0

1.本发明涉及计算机技术领域,具体为一种直播数据处理方法、装置、设备及存储介质。
背景技术:
2.视频直播平台属于互联网行业的重要组成部分之一,在直播过程中,一般由主播端设备采集视频数据和音频数据组成直播数据,然后通过云服务器将直播数据发送给观看直播的用户端设备。
3.通常情况下,一台主播端设备仅支持在一个直播平台进行直播,想要同时在多个直播平台需要多台设备同时工作,这需要高额的设备成本;同时,多台设备拍摄角度会存在偏差,导致主播无法同时在所有直播平台中正视拍摄;此外,多台设备共用网络会占用更多网络资源,导致画面清晰度、流畅度降低,影响用户端设备的播放效果。
技术实现要素:
4.本发明的目的在于提供一种直播数据处理方法、装置、设备及存储介质,以解决上述背景技术中提出的至少一个问题。
5.第一方面,本发明提供了一种直播数据处理方法,所述方法包括:获取节点构建指令,根据所述节点构建指令构建至少一个虚拟摄像头节点;获取接入的至少一个摄像头的数据信息,将所述数据信息接入所述虚拟摄像头节点,生成虚拟摄像头节点的数据流;调用所述虚拟摄像头节点的数据流,生成直播内容推送至不同的直播平台。
6.在一种可能实现的方式中,所述获取接入的至少一个摄像头的数据信息,包括基于camerahal程序获取至少一个摄像头的数据信息,包括:获取摄像头的cameraid信息;创建cameramanager对象,启动监听程序;通过cameramanager类中的opencamera方法,打开对应cameraid的摄像头,获取摄像头的数据流;在回调方法中获取cameraid的摄像头的每一帧数据,并转换为byte数组。
7.在一种可能实现的方式中,所述根据所述节点构建指令构建至少一个虚拟摄像头节点,包括:在camerahal程序中注册至少一个前置虚拟摄像头节点和至少一个后置虚拟摄像头节点。
8.在一种可能实现的方式中,所述在回调方法中获取cameraid的摄像头的每一帧数据,并转换为byte数组,包括:在回调方法中获取cameraid的摄像头的每一帧数据,生成第一byte数组;将第一byte数组转换为bitmap,对图像进行修改;
转换修改后的图像,生成第二byte数组。
9.在一种可能实现的方式中,所述调用所述虚拟摄像头节点的数据流,生成直播内容推送至不同的直播平台,包括:对所述虚拟摄像头节点的数据流进行解码,得到解码视频流;根据所述解码视频流确定目标画面布局模板;所述目标画面布局模板用于对所述解码视频流中的视频帧进行重新布局;将所述解码视频流中的视频帧,基于所述目标画面布局模板重新布局得到合成视频帧,从而得到合成解码视频流;对所述合成解码视频流进行编码得到合成编码视频流,根据所述合成编码视频流生成直播内容推送至不同的直播平台。
10.在一种可能实现的方式中,所述将所述解码视频流中的视频帧,基于所述目标画面布局模板重新布局得到合成视频帧,从而得到合成解码视频流,包括:从所述解码视频流中提取的视频帧,所述视频帧具有对应的视频时间;将所述视频时间相同的视频帧,放入所述画面布局模板中指定位置中得到合成视频帧,从而得到合成解码视频流。
11.在一种可能实现的方式中,所述根据所述解码视频流确定目标画面布局模板,包括:确定输入源数量,所述输入源数量为所述解码视频流的数量;获取与所述输入源数量对应的画面布局模板,作为目标画面布局模板。
12.第二方面,本发明还提供了一种直播数据处理装置,所述装置包括:指令获取单元,用于获取节点构建指令,根据所述节点构建指令构建至少一个虚拟摄像头节点;信息接入单元,用于获取接入的至少一个摄像头的数据信息,将所述数据信息接入所述虚拟摄像头节点,生成虚拟摄像头节点的数据流;内容推送单元,用于调用所述虚拟摄像头节点的数据流,生成直播内容推送至不同的直播平台。
13.第三方面,本发明实施例提供了一种电子设备,包括显示屏、存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,处理器执行计算机程序时实现第一方面任一项所述的音频数据可视化处理方法的步骤。
14.第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,计算机程序被处理器执行时实现第一方面任一项所述的音频数据可视化处理方法的步骤。
15.与现有技术相比,本发明的有益效果是:本发明提供的直播数据处理方法,包括:获取节点构建指令,根据所述节点构建指令构建至少一个虚拟摄像头节点;获取接入的至少一个摄像头的数据信息,将所述数据信息接入所述虚拟摄像头节点,生成虚拟摄像头节点的数据流;调用所述虚拟摄像头节点的数据流,生成直播内容推送至不同的直播平台。本发明通过设置虚拟摄像头节点,使用户无需采用多个直播设备,就能够在多个平台同时直播,降低了直播成本。同时,使用虚拟摄像头推流能够轻松地对摄像头进行画面处理,既可以实现多平台直播时调用同一个直播画
面,还可以对直播画面进行修改和切换,以适配直播平台,适用性强,灵活度高。
附图说明
16.下面结合附图和实施例对本发明作进一步解释:图1为本发明实施例提供的一种直播数据处理方法的流程示意图;图2为本发明实施例提供的一种直播数据处理装置的结构示意图;图3为本发明实施例提供的一种电子设备100的结构示意图;图4为本发明实施例提供的直播平台切换画面的原理示意图。
实施方式
17.下面将结合本发明实施例中的附图,对本发明进行详细说明,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
18.为了便于理解本技术实施例,首先,对本技术涉及的部分数据进行解释说明。
19.虚拟摄像头(virtual camera):云手机中通过软件等技术模拟真实摄像机,欺骗应用软件,使其可以正常使用摄像头的程序。
20.云手机(cloud phone):一种在物理服务器中运行的带有手机操作系统,同时具有虚拟手机功能的容器,其本质是将手机上的应用转移到公有云数据中心的物理服务器中运行,不同的云手机之间相互隔离,互不干扰。
21.推流(push):音视频流产生设备将采集阶段封包好的直播内容传输到服务器的过程。
22.拉流(pull):服务器上已有的直播内容,音视频流播放设备将其拉取到本地的过程。
23.公有云:公有云的核心属性是共享资源服务,是指第三方供应商为用户提供的能够通过公共网络(比如因特网(internet))使用的云端基础设施和服务,用户通过付费获得云端基础设施和服务的使用权限。
24.推流地址(push address):音视频流产生设备在推流阶段需要将采集阶段封包好的直播内容传输到服务器的指定地址,该指定地址即为推流地址,推流地址可以包括公网ip地址、端口号以及统一资源定位符(uniform resource locator ,url)。
25.拉流地址(pull address):在拉流阶段需要在服务器上已有直播内容的情况下,服务器将直播内容放置到服务器的拉流地址并通知音视频流播放设备,音视频流播放设备可从拉流地址拉取直播内容,拉流地址也可以包括公网ip地址、端口号以及url。
26.近年来,直播行业涌现出拥有大量用户群体的直播平台,每个直播平台的用户对平台都具有一定的粘性,因此不同平台的用户群体之间重叠程度不高,这就导致了对于大部分主播来说,相对于固定在单一平台直播,同时在多个平台进行直播可以快速获得更多的观众,也就带来更多的直播收益。
27.通常情况下,直播平台应用程序会独占手机摄像头资源,一个主播为了实现在多个平台进行直播,需要购买多台手机,每台手机运行不同的直播应用程序并从不同的角度
将摄像头对焦于主播,从而实现多平台直播。
28.例如,目前的直播系统通常包括主播终端、直播平台以及播放设备。其中,主播终端、直播平台以及播放设备接入网络。网络可以是有线网络也可以是无线网络,或者是二者的混合。需要说明,以两个主播终端(分别是第一主播终端和第二主播终端)以及两个直播平台(分别是第一直播平台和第二直播平台)为例说明主播的直播过程。
29.其中,主播可操作第一主播终端和第二主播终端,主播是直播内容提供方,具体可以指在互联网或活动中,负责参与一系列策划、编辑、录制、制作、观众互动等工作,并由本人担当主持工作的人,比如游戏主播、带货主播、网课教师、体育赛事主办方、新闻主持人等。
30.主播终端可以是包含摄像头且可以安装直播应用的计算设备,比如智能手机、掌上处理设备、平板电脑、移动笔记本、虚拟现实设备、一体化掌机等等。
31.相同类型的直播应用服务于同一直播平台,安装有相同类型的直播应用的终端可与同一直播平台建立网络连接,具体地,安装有相同类型的直播应用的终端可从同一直播平台中拉取直播内容,或将直播内容推送至该直播平台。
32.通常,第一直播应用服务于第一直播平台,第二直播应用服务于第二直播平台,第一直播平台和第二直播平台互不相同,可由不同的网络服务提供商提供,第一直播应用和第二直播应用为服务于不同的直播平台的不同类型的直播应用。当主播开始直播时,多台主播终端需设置在不同角度,每台主播终端的摄像头对焦于主播,每台主播终端只运行一个直播应用。
33.因此,现有的多平台直播系统存在诸多弊端:1)直播画面仅支持单个摄像头画面,无法同时显示多个摄像头画面或hdmiin画面。
34.2)部分直播应用只支持默认打开前置、后置摄像头,单摄像头设备有时因为缺少前置、或后置摄像头节点而打开黑屏,或者多个摄像头同时存在时,不能拿到某个指定的摄像头画面。
35.3)不同直播应用的直播间装扮风格不能统一、切换平台直播时不方便。
36.4)usb摄像头有时接触不良掉线,或者直播过程中需要更换摄像头,直播就会因摄像头节点丢失而报错,中断直播。
37.5)一个摄像头只可被一个进程调用,无法实现多平台同画面直播。
38.为了解决现有的直播系统中存在的成本高,一个摄像头只可被一个进程调用,无法实现多平台同画面直播的问题,本发明旨在提供一种直播数据处理方法,通过设置虚拟摄像头节点,对接入的摄像头数据进行处理后在进行直播内容推送,能够使得多个不同的直播平台直播同画面直播。
39.参见图1,图1为本发明实施例提供的一种直播数据处理方法的流程示意图。根据图1可知,该直播数据处理方法包括以下步骤:s10、获取节点构建指令,根据节点构建指令构建至少一个虚拟摄像头节点。
40.本步骤中,首先需要确定操作系统和开发环境,确保支持创建虚拟摄像头节点。
41.进一步地,查找或使用适当的软件或库来创建虚拟摄像头节点。例如,linux用户可以使用v4l2loopback。安装所需的软件或库,按照其文档和指南进行配置和设置。最后根
据节点构建指令构建虚拟摄像头节点。本实施例中,至少构建一个虚拟摄像头节点。
42.s20、获取接入的至少一个摄像头的数据信息,将数据信息接入虚拟摄像头节点,生成虚拟摄像头节点的数据流。
43.本步骤中首先确保连接至少一个实际摄像头,且其正常工作。然后根据获取实际摄像头的数据流,将其导入至虚拟摄像头节点,生成虚拟摄像头节点的数据流。
44.s30、调用虚拟摄像头节点的数据流,生成直播内容推送至不同的直播平台。
45.由于需要推送直播内容至不同的直播平台,因此首先需要确定不同直播平台的使用指南,以确定如何推送直播内容。然后根据直播平台的要求,配置和设置推送设置,例如需要进行身份验证、推流url等设置。最后,根据选择的软件或库,将虚拟摄像头节点的数据流推送至直播平台。常见的流媒体软件如obs studio、ffmpeg等,可以在这些程序上采用编程方式来完成此直播内容推送过程。
46.综上,本实施例提供的直播数据处理方法,通过将实际摄像头设备的数据接入到虚拟摄像头节点,然后通过对虚拟摄像头节点的数据处理后生成推送内容,以推送至不同的直播平台。如此无需采用多个摄像头,就可以实现不同直播平台的同画面直播过程,不仅降低了成本,同时操作简单,使用方便。
47.在现有的多平台直播系统中,usb摄像头通常会存在接触不良掉线,或者直播过程中需要更换摄像头,直播就会因摄像头节点丢失而报错,中断直播。
48.为此,在一个实施例中,获取直播需要的摄像头画面或其他视频流,并将视频流逐帧进行画面处理;将处理后的视频流数据推送到虚拟摄像头节点,上层应用调用摄像头数据即可得到经过了处理后的数据;因此,通过调用虚拟摄像头的数据,即使在真实摄像头发生故障时,虚拟摄像头节点并不会丢失,直播应用仍能拿到摄像头数据,等待真实摄像头重连即可恢复直播画面,不会因外设原因导致摄像头节点消失而出现报错。
49.需要说明的是,现有的不同直播应用的直播间装扮风格不能统一、切换平台直播时非常不便。因此上述实施例中上层应用调用摄像头数据是经过了处理后的数据,由于该数据均为虚拟摄像头节点中的数据流,该数据流统一在虚拟摄像头推流的上层应用中进行了画面处理,因此可以实现统一的直播间装扮风格,方便直播应用切换。
50.在一种可能实现的方式中,所述获取接入的至少一个摄像头的数据信息,包括基于camerahal程序获取至少一个摄像头的数据信息,包括:获取摄像头的cameraid信息;创建cameramanager对象,启动监听程序;通过cameramanager类中的opencamera方法,打开对应cameraid的摄像头,获取摄像头的数据流;在回调方法中获取cameraid的摄像头的每一帧数据,并转换为byte数组。
51.本实施例中优选采用camera hal3程序。camera hal3可将camera hal2 中较高级笔记 pi 连接到底层的相机驱动程序和硬件。重新设计 android camer ap 的目的在于大幅提高应用对于android 设备上的相机子系统的控制力,同时重新组织 ap1,提高其交率和可维护性。借助额外的控制能力,能够更轻松地在 android 设备上构建高品质的相机应用,这些应用可在多种产品上稳定运行,同时仍会尽可能使用设备专用算法来最大限度地提升质量和性能。
52.camera hal3相机子系统将多个运行模式整合为一个统一的视图,可以使用这种视图实现之前的任何模式以及一些其他模式,例如连拍模式这样一来,便可以高用户对聚焦、曝光以及更多后期处理(例如降噪,对比度和锐化)效果的控制力。此外,这种简化的视图还能够使应用开发者更轻松地使用相机的各种功能。apl 将相机子系统塑造为一个管道,该管道可按照 1:1 的基准将传入的捕获请求转化为帧。这些请求包含有关的捕获和处理的所有置信息,其中包括分辨率和像素格式:手动传感器、镜头和闪光灯控件,3a 操作模式,raw 到 yuv 处理控件,统计信息生成等等。
53.本实施例中,基于camerahal的摄像头取流过程主要包括:获取当前设备存在的摄像头信息,并得到cameraid。
54.创建 cameramanager对象,设置setonimageavailablelistener监听。
55.通过cameramanager类中的opencamera方法,打开对应cameraid的摄像头,获取摄像头数据流。
56.在onimageavailable回调方法中拿到摄像头每一帧的数据,通过yuvdecoder的方法转换成byte数组。
57.通过上述实施例,能够快速准确地接入摄像头的数据信息至虚拟摄像头节点中。
58.在一种可能实现的方式中,所述根据所述节点构建指令构建至少一个虚拟摄像头节点,包括:在camera hal程序中注册至少一个前置虚拟摄像头节点和至少一个后置虚拟摄像头节点。
59.本实施例中,虚拟摄像头节点通常是在camera hal程序中注册得到的。在实际直播过程中,部分直播应用只支持默认打开前置或后置摄像头,单摄像头设备有时因为缺少前置、或后置摄像头节点而打开黑屏,或者多个摄像头同时存在时,不能拿到某个指定的摄像头画面。
60.因此,为了解决该问题,本实施例同时注册两个虚拟摄像头节点,分别注册成前置和后置,将处理后的流数据分别推入到虚拟摄像头的节点中,如此不论直播应用调取前置还是后置都有节点和数据存在,且可以根据需求推送需要的摄像头画面数据。如此可以更为全面的获取不同方位的摄像头数据。
61.在一种可能实现的方式中,基于上述的虚拟摄像头的推流过程,包括:1)在camera hal中注册虚拟摄像头节点,可以参考external camera device session.cpp和external camera device.cpp实现external fake camera device session.cpp、externalfakecameradevice.cpp。
62.优选地,注册cameraid为0、1,以便第三方应用调取摄像头数据时第一时间拿到的时虚拟摄像头的数据。
63.2)在externalfakecameradevice.cpp类的方法createpreviewbuffer中注册graphicbuffermapper,将回调的buffer给到bytes数组mapbuffer中。
64.3)在external fake camera device.cpp类的方法output thread::threadloop()中,将mapbuffer的数据给到frameinfo.buffer中,以便安卓上层获取。
65.4)确定实现虚拟摄像头推流的底层so库(libdata_bridge.so)在库中实现方法,上层应用调用该方法可将获取到的视频流数据推送到libdata_bridge.so,而后再通过推
流方法,将视频流数据推送到虚拟摄像头类中的数据buffer,供上层应用获取在一种可能实现的方式中,所述在回调方法中获取cameraid的摄像头的每一帧数据,并转换为byte数组,包括:在回调方法中获取cameraid的摄像头的每一帧数据,生成第一byte数组;将第一byte数组转换为bitmap,对图像进行修改;转换修改后的图像,生成第二byte数组。
66.本实施例中,先获取摄像头视频流,并处理成byte数组,然后将得到的byte数组转换成bitmap并对图像进行修改,最后将处理后的bitmap转换回nv12byte数组,并推送到虚拟摄像头。
67.优选地,获取摄像头视频流可设置不同分辨率,虚拟摄像头也可设置不同的分辨率,都在上层应用实现,无需再修改固件。虚拟摄像头画面支持旋转、镜像等操作,可在上层应用实现。
68.需要说明的是,现有的多平台直播系统中,直播画面仅支持单个摄像头画面,无法同时显示多个摄像头画面或hdmiin画面。
69.为此,在一种可能实现的方式中,调用所述虚拟摄像头节点的数据流,生成直播内容推送至不同的直播平台,包括:1)对所述虚拟摄像头节点的数据流进行解码,得到解码视频流;2)根据所述解码视频流确定目标画面布局模板;所述目标画面布局模板用于对所述解码视频流中的视频帧进行重新布局;3)将所述解码视频流中的视频帧,基于所述目标画面布局模板重新布局得到合成视频帧,从而得到合成解码视频流;4)对所述合成解码视频流进行编码得到合成编码视频流,根据所述合成编码视频流生成直播内容推送至不同的直播平台。
70.步骤1)中,首先获取一路或者多路摄像头拍摄的视频流,视频流为摄像头分别从不同角度针对目标对象拍摄所得。
71.其中,直播系统中可以包括有多个摄像头,终端设备和监控设备。具体地,终端设备主要负责拉取摄像头拍摄的视频流,并且对视频流进行编解码,再布局,合成等操作,然后再推送至网络中的监控终端;监控设备可以为用于显示直播画面的设备,比如移动终端、电视机、计算机、掌上电脑等,监控设备可以是作为监考终端的一体机。
72.步骤2)中,终端设备会判断输入的视频流的格式,以基于视频的格式自动进行解码,并且本发明实施例优先使用硬件解码,提高视频的解码效率。
73.步骤3)中,画面布局模板用于对所述解码视频流中的视频帧进行重新布局,使得多路视频流的视频帧可以在同一个画面中显示。
74.本发明实施例预先针对不同类型的实训技能考试设置了画面布局模板,并且每一个类型的考试均设置了多个画面布局模板,使得可以根据获取的解码视频流确定目标画面布局模板,将所述解码视频流中的视频帧,在确定目标画面布局模板后,将解码视频流中的视频帧基于目标画面布局模板重新布局得到合成视频帧,使得可以根据合成视频帧进一步组合得到合成解码视频流。
75.终端设备对于合成解码视频流进行编码处理,得到合成编码视频流,然后将编码
完成后的合成编码视频流推送至不同的直播平台,以在不同的直播平台上播放合成编码视频流。由于本发明实施例将多路视频流合成为一路视频流,因此在不同的直播平台播放合成编码视频流时,可以在一个视频画面上同时观看到不同画面。
76.因此,本实施例通过提取摄像头画面数据,在上层应用中对数据进行处理,将处理合成后的数据推入到虚拟摄像头节点中,如此直播软件即可拿到多个摄像头合成后的画面,也支持hdmiin、视频和图片等多种数据流合成。
77.在一种可能实现的方式中,所述将所述解码视频流中的视频帧,基于所述目标画面布局模板重新布局得到合成视频帧,从而得到合成解码视频流,包括:从所述解码视频流中提取的视频帧,所述视频帧具有对应的视频时间;将所述视频时间相同的视频帧,放入所述画面布局模板中指定位置中得到合成视频帧,从而得到合成解码视频流。
78.本实施例中,终端设备可以从多路解码视频流中抽取视频时间的视频帧,然后将这些视频帧放到目标画面布局模板的指定位置中,从而得到一帧包含了多个视频帧的合成视频帧,最后将所有的合成视频帧按照视频时间重新组合,从而得到合成解码视频流。
79.在一种可能实现的方式中,所述根据所述解码视频流确定目标画面布局模板,包括:确定输入源数量,所述输入源数量为所述解码视频流的数量;获取与所述输入源数量对应的画面布局模板,作为目标画面布局模板。
80.本实施例中,预先设置的画面布局模板分别具有对应的输入源数量。本发明实施例确定输入源数量,也即是解码视频流的数量(路数),然后根据输入源数量获取到匹配的画面布局模板,作为目标画面布局模板。
81.其中,本发明实施例的终端设备可以对多路视频流进行自动布局,例如,当检测到输入源数量为2的时候,将视频画面布局为左右两个画面的画面布局模板,当检测到输入源数量为3的时候,将视频画面布局为“品”字结构的画面布局模板,,当检测到输入源数量为4的时候,将视频画面布局为左侧三个画面右侧一个大画面的画面布局模板。
82.当然,上述几种画面布局模板仅作为示例,在实际中还可以根据需求设置为其他的视频画面布局结构,另外画面布局模板除了可以基于输入源数量确定外,还可以基于直播的类型共同确定,使得展示于直播应用的视频画面符合直播风格与直播需求,增强直播互动的趣味性。
83.基于与上述方法相同的发明构思,在本公开另一实施例中,还公开了一种直播数据处理装置。请参阅图2,图2为本发明实施例提供的一种直播数据处理装置的结构示意图。
84.本发明实施例提供的一种直播数据处理装置,包括指令获取单元10,用于获取节点构建指令,根据所述节点构建指令构建至少一个虚拟摄像头节点;信息接入单元20,用于获取接入的至少一个摄像头的数据信息,将所述数据信息接入所述虚拟摄像头节点,生成虚拟摄像头节点的数据流;内容推送单元30,用于调用所述虚拟摄像头节点的数据流,生成直播内容推送至不同的直播平台。
85.需要说明的是,在本发明实施例中,各个模块的具体实现还可以对应参照上述实
施例所示的方法实施例的相应描述,为了简便,此处不再进一步赘述。
86.请参阅图3,本发明某一实施例还提供了一种电子设备100,用于实现上述实施例所示的方法。
87.电子设备100可以包括:至少一个处理器120,例如中央处理器,至少一个总线,至少一个网络接口,存储器130,显示器140和人机交互输入设备,如摄像头110。其中,总线用于实现处理器120、网络接口、存储器130、显示器140和人机交互输入设备之间的连接通信。
88.在一些情况下,摄像头110包括前置摄像头、后置摄像头和其他外接摄像设备。在显示器的显示界面上,包括摄像头切换控制键,可以指定画面中的图像由前置摄像头采集或后置摄像头采集或其他外接摄像设备采集。
89.网络接口可选的可以包括标准的有线接口、无线接口(如wifi接口、蓝牙接口),通过网络接口可以与云端建立通信连接。存储器可以是高速ram存储器,也可以是非不稳定的存储器,例如至少一个磁盘存储器。作为一种计算机存储介质的存储器中可以包括操作系统、网络通信模块以及计算机程序。人机交互输入设备可以是鼠标、键盘、触控模组或手势识别模组等。
90.需要说明的是,网络接口可以连接获取器、发射器或其他通信模块,其他通信模块可以包括但不限于wifi模块、蓝牙模块等,可以理解,本发明实施例中直播数据处理装置也可以包括获取器、发射器和其他通信模块等。处理器可以用于调用存储器中存储的程序指令,可以执行如上述实施例所提供的方法。
91.其中,电子设备连接云服务器,云服务器包括若干个直播平台200,而每一个直播平台200又对应若干个用户端设备300。
92.在进行直播时,首先由电子设备100获取实际摄像头数据,然后接入云服务器的虚拟摄像头节点进行处理,生成对应的数据流,然后根据直播平台的要求推送至不同的直播平台,使得不同直播平台可以实现同画面直播,无需主播购置多个电子设备,且在电子设备的摄像头连线故障时也不影响直播,只需要待故障恢复后重新连接即可,操作方便且降低了直播成本。
93.进一步地,图4提供了直播画面切换的原理示意图。根据图4可知,画面a、画面b、画面c分别对应不同直播平台。其他画面可以是不同直播平台反馈的弹幕,通过收集不同平台的弹幕整合在其他画面区域,方便主播获取弹幕信息与多个直播平台的用户互动反馈。本实施例中在不同的直播平台,为了适应相应的直播用户受众喜好,可以在指定画面中,配置不同的贴纸、滤镜效果,如此可以匹配直播平台的个性化需求,从而满足直播平台的多样性和趣味性需求。
94.本发明某一实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机或处理器上运行时,使得计算机或处理器执行上述任一个方法中的一个或多个步骤。上述信号处理装置的各组成模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在所述计算机可读取存储介质中。
95.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计
算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如,固态硬盘(solidstatedisk,ssd))等。
96.综上所述,通过实施本发明实施例,至少可以实现以下优点:1)提取摄像头画面数据,在上层应用中对数据进行处理,将处理合成后的数据推入到虚拟摄像头节点中,如此直播软件即可拿到多个摄像头合成后的画面,也支持hdmiin、视频和图片等多种数据流合成。
97.2)同时注册两个虚拟摄像头节点,分别注册成前置和后置,将处理后的流数据分别推入到虚拟摄像头的节点中,如此不论直播应用调取前置还是后置都有节点和数据存在,且可以根据需求推送需要的摄像头画面数据。
98.3)所有直播应用调取的摄像头画面均为虚拟摄像头节点中的数据流,该数据流统一在虚拟摄像头推流的上层应用中进行画面处理,如此可实现统一的直播间装扮风格。
99.4)所有直播应用调取的摄像头画面均为虚拟摄像头节点中的数据流,当真实摄像头掉线时,虚拟摄像头节点并不会丢失,直播应用仍能拿到摄像头数据,等待真实摄像头重连即可恢复直播画面。
100.5)可注册多个虚拟摄像头节点,不同平台调用不同的节点,但是虚拟摄像头节点内的数据都是统一经过处理后的,因此可以很好的适配直播平台的多样性。
101.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,该的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可存储程序代码的介质。
102.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的电子设备、装置等的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
103.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
技术特征:
1.一种直播数据处理方法,其特征在于,所述方法包括:获取节点构建指令,根据所述节点构建指令构建至少一个虚拟摄像头节点;获取接入的至少一个摄像头的数据信息,将所述数据信息接入所述虚拟摄像头节点,生成虚拟摄像头节点的数据流;调用所述虚拟摄像头节点的数据流,生成直播内容推送至不同的直播平台。2.根据权利要求1所述的直播数据处理方法,其特征在于,所述获取接入的至少一个摄像头的数据信息,包括基于camerahal程序获取至少一个摄像头的数据信息,包括:获取摄像头的cameraid信息;创建cameramanager对象,启动监听程序;通过cameramanager类中的opencamera方法,打开对应cameraid的摄像头,获取摄像头的数据流;在回调方法中获取cameraid的摄像头的每一帧数据,并转换为byte数组。3.根据权利要求2所述的直播数据处理方法,其特征在于,所述根据所述节点构建指令构建至少一个虚拟摄像头节点,包括:在camerahal程序中注册至少一个前置虚拟摄像头节点和至少一个后置虚拟摄像头节点。4.根据权利要求2所述的直播数据处理方法,其特征在于,所述在回调方法中获取cameraid的摄像头的每一帧数据,并转换为byte数组,包括:在回调方法中获取cameraid的摄像头的每一帧数据,生成第一byte数组;将第一byte数组转换为bitmap,对图像进行修改;转换修改后的图像,生成第二byte数组。5.根据权利要求1所述的直播数据处理方法,其特征在于,所述调用所述虚拟摄像头节点的数据流,生成直播内容推送至不同的直播平台,包括:对所述虚拟摄像头节点的数据流进行解码,得到解码视频流;根据所述解码视频流确定目标画面布局模板;所述目标画面布局模板用于对所述解码视频流中的视频帧进行重新布局;将所述解码视频流中的视频帧,基于所述目标画面布局模板重新布局得到合成视频帧,从而得到合成解码视频流;对所述合成解码视频流进行编码得到合成编码视频流,根据所述合成编码视频流生成直播内容推送至不同的直播平台。6.根据权利要求5所述的直播数据处理方法,其特征在于,所述将所述解码视频流中的视频帧,基于所述目标画面布局模板重新布局得到合成视频帧,从而得到合成解码视频流,包括:从所述解码视频流中提取的视频帧,所述视频帧具有对应的视频时间;将所述视频时间相同的视频帧,放入所述画面布局模板中指定位置中得到合成视频帧,从而得到合成解码视频流。7.根据权利要求5所述的直播数据处理方法,其特征在于,所述根据所述解码视频流确定目标画面布局模板,包括:确定输入源数量,所述输入源数量为所述解码视频流的数量;
获取与所述输入源数量对应的画面布局模板,作为目标画面布局模板。8.一种直播数据处理装置,其特征在于,所述装置包括:指令获取单元,用于获取节点构建指令,根据所述节点构建指令构建至少一个虚拟摄像头节点;信息接入单元,用于获取接入的至少一个摄像头的数据信息,将所述数据信息接入所述虚拟摄像头节点,生成虚拟摄像头节点的数据流;内容推送单元,用于调用所述虚拟摄像头节点的数据流,生成直播内容推送至不同的直播平台。9.一种电子设备,其特征在于,包括显示屏、存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述直播数据处理方法的步骤。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述直播数据处理方法的步骤。
技术总结
本发明提供了一种直播数据处理方法、装置、设备及存储介质,涉及计算机技术领域。所述直播数据处理方法包括获取节点构建指令,根据所述节点构建指令构建至少一个虚拟摄像头节点;获取接入的至少一个摄像头的数据信息,将所述数据信息接入所述虚拟摄像头节点,生成虚拟摄像头节点的数据流;调用所述虚拟摄像头节点的数据流,生成直播内容推送至不同的直播平台。本发明通过设置虚拟摄像头节点,使用户无需采用多个直播设备,就能够在多个平台同时直播,降低了直播成本。使用虚拟摄像头推流能够轻松地对摄像头进行画面处理,既能实现多平台直播时调用同一个直播画面,还可以对直播画面进行修改和切换以适配直播平台,适用性强且灵活度高。活度高。活度高。
技术研发人员:李四平
受保护的技术使用者:深圳市亿晟科技有限公司
技术研发日:2023.08.07
技术公布日:2023/9/7
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/