一种音视频数据传输方法、装置及存储介质与流程

文档序号:18618822发布日期:2019-09-06 22:17阅读:166来源:国知局
一种音视频数据传输方法、装置及存储介质与流程

本发明涉及互联网技术领域,具体涉及一种音视频数据传输方法、装置及存储介质。



背景技术:

随着互联网技术的发展,用户不仅仅满足于文字的沟通与社交,对实时语音与视频的需求越来越强烈,因此用户通过音视频会话进行信息交互越来越普及,用户可以根据自己的需求通过终端加入不同的音视频会话,以便在该音视频会话内进行信息交互等。

现有技术中,多个终端之间需要通过相同客户端的加入音视频会话,从而在同一音视频会话内,各个终端可以通过相同客户端进行音视频数据交互。例如,终端a、终端b和终端c可以预先下载并安装内置有软件开发工具包(softwaredevelopmentkit,sdk)的客户端,进而基于该客户端,加入音视频会话;从而可以在音视频会话内发送音视频数据,或者是接收音视频数据等,以实现信息交互。

在对现有技术的研究和实践过程中,本发明的发明人发现,现有的终端进行音视频数据交互时,需要通过相同客户端的才能加入同一个音视频会话,使得进行音视频数据交互的局限性较大及通用性不高。



技术实现要素:

本发明实施例提供一种音视频数据传输方法、装置及存储介质,旨在提高音视频数据传输的灵活性。

为解决上述技术问题,本发明实施例提供以下技术方案:

一种音视频数据传输方法,包括:

在不同类型的多个客户端之间的音视频会话中,接收发送客户端发送的音视频数据,所述发送客户端为所述多个客户端中的任意一个客户端;

获取各个接收客户端所需的编码格式,所述接收客户端为所述多个客户端中除所述发送客户端之外的客户端;

根据所述各个接收客户端所需的编码格式,分别对所述音视频数据进行转码,得到所述各个接收客户端对应的转码后的音视频数据;

将所述各个接收客户端对应的转码后的音视频数据,分别传输送给所述各个接收客户端。

一种音视频数据传输装置,包括:

第一接收单元,用于在不同类型的多个客户端之间的音视频会话中,接收发送客户端发送的音视频数据,所述发送客户端为所述多个客户端中的任意一个客户端;

获取单元,用于获取各个接收客户端所需的编码格式,所述接收客户端为所述多个客户端中除所述发送客户端之外的客户端;

转码单元,用于根据所述各个接收客户端所需的编码格式,分别对所述音视频数据进行转码,得到所述各个接收客户端对应的转码后的音视频数据;

传输单元,用于将所述各个接收客户端对应的转码后的音视频数据,分别传输送给所述各个接收客户端。

一种存储介质,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行上述音视频数据传输方法中的步骤。

本发明实施例可以在不同类型的多个客户端之间的音视频会话中,接收发送客户端发送的音视频数据,其中,发送客户端为多个客户端中的任意一个客户端;以及,获取各个接收客户端所需的编码格式,其中,接收客户端为多个客户端中除发送客户端之外的客户端;然后根据各个接收客户端所需的编码格式,分别对音视频数据进行转码,得到各个接收客户端对应的转码后的音视频数据;将各个接收客户端对应的转码后的音视频数据,分别传输送给各个接收客户端。该方案不同类型的多个客户端可以加入同一个音视频会话,并在该音视频会话内根据各个接收客户端所需的编码格式对音视频数据进行转码,将转码后的音视频数据分别传输送给各个接收客户端,实现了不同类型客户端在同一个音视频会话内进行音视频数据交互,克服了现有相同客户端才能加入同一个音视频会话进行音视频数据传输的局限性,大大提高了音视频数据传输的灵活性。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的音视频数据传输所涉及的实施环境的示意图;

图2是本发明实施例提供的音视频数据传输所涉及的另一实施环境的示意图;

图3是本发明实施例提供的音视频数据传输系统的场景示意图;

图4是本发明实施例提供的音视频数据传输方法的流程示意图;

图5是本发明实施例提供的音视频数据传输方法的另一流程示意图;

图6是本发明实施例提供的中转服务器进行音视频数据传输的架构图;

图7是本发明实施例提供的音视频数据传输装置的结构示意图;

图8是本发明实施例提供的音视频数据传输装置的另一结构示意图;

图9是本发明实施例提供的音视频数据传输装置的另一结构示意图;

图10是本发明实施例提供的音视频数据传输装置的另一结构示意图;

图11是本发明实施例提供的服务器的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供一种音视频数据传输方法、装置及存储介质。

请参阅图1,图1为本发明实施例提供的音视频数据传输方法所涉及的实施环境的示意图,该实施环境可以包括:发送客户端101、接收客户端102、登录服务器103、信令服务器104、查询服务器105、中转服务器106、策略服务器107及接口机108等。

其中,发送客户端101可以是sdk客户端、小程序客户端、传统电话(publicswitchedtelephonenetwork,pstn)或web客户端(也可以称为h5客户端,例如,公众号客户端和浏览器客户端等)等,该发送客户端101可以集成在终端上,发送客户端101所在的该终端可以为智能手机、平板电脑、笔记本电脑及台式电脑等,本发明实施例不对发送客户端101的产品类型作具体的限定。该发送客户端101所在的终端可以内置有支持网页实时通信(webreal-timecommunication,webrtc)功能的模块,使得该终端可以基于该webrtc功能的模块,与中转服务器106、及接口机108等建立网络连接,并且接收客户端102可以加入音视频会话。或者是,该发送客户端101可以是安装有内置sdk的客户端,或该发送客户端101可以安装有sdk组件,从而可以加入音视频会话;等等。

接收客户端102可以是sdk客户端、小程序客户端、pstn客户端或web客户端等,该web客户端可以包括公众号客户端和浏览器客户端等,该接收客户端102可以集成在终端上,接收客户端102所在的该终端可以为智能手机、平板电脑、笔记本电脑及台式电脑等,本发明实施例同样不对接收客户端102的产品类型作具体的限定。该接收客户端102可以是安装有内置sdk的客户端,或该接收客户端102可以安装有sdk组件,从而可以加入音视频会话。或者是,该接收客户端102所在的终端可以内置有支持webrtc功能的模块,使得该终端可以基于该webrtc功能的模块,与中转服务器106、及接口机108等建立网络连接,并且接收客户端102可以加入音视频会话。

登录服务器103可以是开发者为快速完成账号集成接入音视频或即时通信云服务而提供的一套通用账号登录组件。

信令服务器104可以内置有支持webrtc功能的模块,该信令服务器104提供的功能可以包括:

(1)提供接入和登录功能,从而使得小程序客户端、pstn客户端、及web客户端等客户端能够接入和登录音视频会话;(2)提供信令传输功能,从而能够在小程序客户端、pstn客户端、及web客户端等客户端与中转服务器106之间传输信令;(3)提供分配功能,从而能够为小程序客户端、pstn客户端、及web客户端等客户端分配进行网络连接的中转服务器106;(4)提供数据协商下发功能,从而能够在小程序客户端、pstn客户端、及web客户端等客户端与中转服务器106之间进行音视频初始参数的协商下发、连接通道的协商及安全参数的协商下发等。

查询服务器105主要负责提供统一的查询服务,该查询服务包括对用户资料、关系链、备注、分组、群关系链、用户产生的信息等的查询。

中转服务器106内置有支持webrtc功能的模块,该中转服务器106提供的功能可以包括:

(1)面向小程序客户端、pstn客户端、及web客户端等客户端模拟webrtc,与小程序客户端、pstn客户端、及web客户端等客户端建立网络连接,该网络连接过程可以包括互动式连接建立(interactiveconncetivityestablishment,ice)、数据包传输层安全协议(datagramtransportlayersecurity,dtls)的密钥协商、安全实时传输协议(securereal-timetransportprotocol,srtp)的音视频数据的中转传输、以及实时传输控制协议(real-timetransportcontrolprotocol,rtcp)的音视频质量的控制;(2)面向接口机模拟成sdk客户端,与音视频会话系统建立连接,包括加入音视频会话、进行音视频数据传输等;(3)将小程序客户端、pstn客户端、及web客户端等客户端加入音视频会话的信令、退出音视频会话的信令、状态通知等信令衔接起来;(4)对小程序客户端、pstn客户端、web客户端、及sdk客户端的音视频数据进行转码及转封装等。

策略服务器107,该策略服务器107提供的功能可以包括:(1)负责对会话请求的鉴权、签名加密、及安全确认等;(2)根据客户端所在的位置信息,以及信令服务器104、中转服务器106、及接口机108等机器的位置信息和负载信息等,为客户端就近分配接口机108及流控机等,使得同一音视频会话及同运营商视为客户端尽量聚集到相同的接口机108。

接口机108可以用于对音视频会话系统中的音视频数据及信令进行转发。

上述发送客户端101可与登录服务器103、信令服务器104及中转服务器106通过有线网络或无线网络进行连接,登录服务器103还可与信令服务器104通过有线网络或无线网络进行连接,信令服务器104还可与中转服务器106通过有线网络或无线网络进行连接,查询服务器105可与中转服务器106通过有线网络或无线网络进行连接,中转服务器106还可与策略服务器107、接口机108及接收客户端102通过有线网络或无线网络进行连接等。

请参阅图2,图2是本发明实施例提供的音视频数据传输方法所涉及的另一实施环境的示意图,该实施环境可以包括:发送客户端101、接收客户端102及服务器109等。

其中,发送客户端101与图1中所示的发送客户端101的产品类型及功能相同,此处不再赘述。接收客户端102与图1中所示的接收客户端102的产品类型及功能相同,此处也不再赘述。服务器109具有图1中登录服务器103、信令服务器104、查询服务器105、中转服务器106、策略服务器107及接口机108等的全部功能,具体参见图1中对登录服务器103、信令服务器104、查询服务器105、中转服务器106、策略服务器107及接口机108等的描述,此处也不再赘述。

需要说明的是,图1和图2所示的音视频数据传输方法所涉及的实施环境的示意图仅仅是一个示例,本发明实施例描述的音视频数据传输的实施环境是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着音视频数据传输的实施环境的演变和新业务场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。

请参阅图3,基于图1所示的实施环境,图3示出了本发明实施例提供的音视频数据传输系统的场景示意图,其中,web客户端可以包括公众号客户端和浏览器客户端等,小程序客户端、公众号客户端、浏览器客户端、pstn客户端及sdk客户端等不同类型的客户端之间可以建立音视频会话,在该音视频会话中,小程序客户端、公众号客户端、浏览器客户端、pstn客户端及sdk客户端等中的任意一个客户端均可以作为发送客户端,或者作为接收客户端。

对于sdk客户端而言,当因业务需求需要申请加入到音视频会话时,sdk客户端可以向策略服务器发送会话请求,该会话请求可以携带音视频会话标识、登录账号、sdk客户端的网络之间互连的协议(internetprotocol,ip)地址等。当接收到会话请求时,策略服务器可以根据sdk客户端的ip地址,从ip库中查询到sdk客户端的ip地址所属的数据中心,其中,ip库中可以存储ip地址与数据中心之间的对应关系,该数据中心是指为了降低服务器的数据处理压力所划分的数据转发及处理中心。策略服务器还可以根据登录账号,从查询服务器上查询sdk客户端的用户资料、关系链、群关系链及位置信息等信息;策略调度服务器还可以根据登录账号通过登录服务器对sdk客户端进行登录验证。当对sdk客户端验证通过时,策略服务器可以根据音视频会话标识判断是否存在该音视频会话标识对应的音视频会话。

若存在音视频会话标识对应的音视频会话,则策略服务器可以确定该音视频会话对应的流控ip。此时,策略调度服务器可以根据查询到的sdk客户端的信息及所属的数据中心等,为sdk客户端分配接口机等。若不存在音视频会话标识对应的音视频会话,则策略调度服务器可以根据查询到的sdk客户端的信息及所属的数据中心等,为sdk客户端分配流控机及接口机等。策略调度服务器将分配的流控机ip及接口机ip发送给sdk客户端,sdk客户端可以根据接收到的流控机ip及接口机ip加入到音视频会话,并与流控机及接口机建立连接。

当有音视频数据需要发送给音视频会话内的其他客户端时,该sdk客户端可以将音视频数据发送至接口机,进而通过接口机将音视频数据发送至音视频会话内的其他客户端;当接收到音视频会话内的其他客户端发送的音视频数据时,与sdk客户端连接的接口机可以将接收到的音视频数据发送给sdk客户端。

对于web客户端而言,当因业务需求需要申请加入到音视频会话时,web客户端可以向登录服务器发送登录请求,由登录服务器对web客户端进行登录验证,当验证通过时,web客户端可以完成登录。

在登录完成后,web客户端可以向信令服务器发送数据传输能力协商请求,数据传输能力协商请求可携带有web客户端支持的音频数据格式和视频数据格式、会话描述协议(sessiondescriptionprotocol,sdp)及通道(例如用于收发音视频数据的ip和端口等)等,由信令服务器将数据传输能力协商请求发送至中转服务器。当接收到数据传输能力协商请求时,中转服务器可以存储web客户端支持的音频数据格式和视频数据格式等,并根据web客户端支持的音频数据格式和视频数据格式,以及中转服务器支持的音频数据格式和视频数据格式,确定与web客户端进行音视频数据传输时的数据格式,并向信令服务器发送数据传输能力协商响应,数据传输能力协商响应包括与web客户端进行音视频数据传输时的数据格式等。当接收到数据传输能力协商响应时,信令服务器可以将数据传输能力协商响应发送至web客户端。

web客户端还可以向信令服务器发送会话请求,该会话请求可以携带有音视频会话标识、登录账号、及web客户端的ip地址等。信令服务器将会话请求转发给中转服务器,中转服务器接收到会话请求后,可以为web客户端更换账号,以便统一音视频会话中各个客户端的账号类型。在更换账号后,中转服务器可以将会话请求转发给策略调度服务器。当接收到会话请求时,策略服务器可以根据web客户端的ip地址,从ip库中查询到web客户端的ip地址所属的数据中心,策略服务器还可以根据登录账号,从查询服务器上查询web客户端的用户资料、关系链、群关系链及位置信息等信息。

策略服务器可以根据音视频会话标识判断是否存在该音视频会话标识对应的音视频会话,若存在音视频会话标识对应的音视频会话,则策略服务器可以确定该音视频会话对应的流控ip。此时,策略调度服务器可以根据查询到的web客户端的信息及所属的数据中心等,为web客户端分配接口机等。若不存在音视频会话标识对应的音视频会话,则策略调度服务器可以根据查询到的web客户端的信息及所属的数据中心等,为web客户端分配流控机及接口机等。

策略调度服务器可以将分配的流控机ip及接口机ip发送给中转服务器。中转服务器在接收到流控机ip及接口机ip后,中转服务器可以与流控机ip对应的流控机建立连接,以及与接口机ip对应的接口机建立连接,此时中转服务器可以为web客户端分配中转ip,并将中转ip发送给web客户端,web客户端可以根据中转ip与中转服务器建立安全连接。从而可以通过信令服务器与中转服务器之间网络连接,进而基于web客户端与中转服务器之间建立的网络连接、中转服务器与接口机之间建立的网络连接,加入到音视频会话。

当有音视频数据需要发送给音视频会话内的其他客户端时,web客户端可以将音视频数据发送给中转服务器,由中转服务器将音视频数据发送给接口机,进而通过接口机将音视频数据发送给音视频会话内的其他客户端。当接收到音视频会话内的其他客户端发送的音视频数据,与web客户端连接的接口机可以将接收到的音视频数据发送给中转服务器,进而由中转服务器将音视频数据发送至web客户端。

需要说明的是,对于小程序客户端及pstn客户端等客户端而言,当因业务需求需要申请加入到音视频会话时,其加入音视频会话,以及发送音视频数据或接收音视频数据等的流程,web客户端加入音视频会话、发送或接收音视频数据的流程类似,在此不作赘述。

在进行音视频数据传输的过程中,音视频数据传输系统还可通过流控机对音视频会话进行管理、对音视频数据传输过程中的各项音视频参数和音视频选路进行调节,从而实现对音视频数据传输质量的调节。具体调节过程可以为:流控机从策略服务器获取各项音视频参数和音视频选路等信息,进而以信令的形式向接口机发送调节指令,由接口机对sdk客户端、小程序客户端、pstn客户端、及web客户端等客户端发送的音视频数据进行调节。

为了便于对音视频会话进行管理,每个数据中心的流控层及接入层会将每个数据中心的状态上报至配置服务器,由配置服务器上报至策略服务器,该状态可以用于配置服务器对音视频通信质量进行调节等。

此外,该音视频数据传输系统可以包括音视频数据传输装置,该音视频数据传输装置具体可以集成在服务器中,例如,中转服务器,以下将以音视频数据传输装置集成在中转服务器中为例,该中转服务器主要用于,在不同类型的多个客户端之间的音视频会话中,接收发送客户端发送的音视频数据,该发送客户端为多个客户端中的任意一个客户端;以及获取各个接收客户端所需的编码格式,该接收客户端为多个客户端中除发送客户端之外的客户端;然后根据各个接收客户端所需的编码格式,分别对音视频数据进行转码,得到各个接收客户端对应的转码后的音视频数据;将各个接收客户端对应的转码后的音视频数据,分别传输送给各个接收客户端;等等。

需要说明的是,图3所示的音视频数据传输系统的场景示意图仅仅是一个示例,本发明实施例描述的音视频数据传输系统以及场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着音视频数据传输系统的演变和新业务场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。

以下分别进行详细说明。

在本实施例中,将从音视频数据传输装置的角度进行描述,该音视频数据传输装置具体可以集成在服务器或网关等网络设备中。

一种音视频数据传输方法,包括:在不同类型的多个客户端之间的音视频会话中,接收发送客户端发送的音视频数据,发送客户端为多个客户端中的任意一个客户端;获取各个接收客户端所需的编码格式,接收客户端为多个客户端中除发送客户端之外的客户端;根据各个接收客户端所需的编码格式,分别对音视频数据进行转码,得到各个接收客户端对应的转码后的音视频数据;将各个接收客户端对应的转码后的音视频数据,分别传输送给各个接收客户端。

请参阅图4,图4是本发明一实施例提供的音视频数据传输方法的流程示意图。该音视频数据传输方法可以包括:

在步骤s101中,在不同类型的多个客户端之间的音视频会话中,接收发送客户端发送的音视频数据,发送客户端为多个客户端中的任意一个客户端。

其中,不同类型的多个客户端可以包括sdk客户端、小程序客户端、公众号客户端、浏览器客户端、及pstn客户端等,还可以包括其他类型的客户端,具体内容在此处不作限定。

不同类型的多个客户端可以是每个客户端分别对应不同的类型,例如,当多个客户端为3个时,这3个客户端分别对应sdk客户端、浏览器客户端和pstn客户端等不同类型,因此总共有3种不同的类型的客户端。

不同类型的多个客户端还可以是包括多种不同的类型,且每种不同的类型可以包括一个或多个客户端,例如,当多个客户端为6个时,这6个客户端中可以包括sdk客户端、浏览器客户端和公众号客户端等3种不同类型,其中,sdk客户端包括一个、浏览器客户端包括2个和公众号客户端包括3个。

不同类型的多个客户端可以加入同一个音视频会话,并在该音视频会话中进行音视频数据交互。在同一个音视频会话中不同类型的多个客户端,发送音视频数据的发送客户端可以是多个客户端中的任意一个客户端,而接收音视频数据的接收客户端可以是多个客户端中的任意一个客户端。音视频数据传输装置可以接收发送客户端通过音视频会话发送的音视频数据。

例如,在sdk客户端、小程序客户端、公众号客户端、浏览器客户端、及pstn客户端等组成的音视频会话中,浏览器客户端可以是发送客户端,sdk客户端、小程序客户端、公众号客户端、及pstn客户端可以是接收客户端。

在通过音视频会话进行音视频数据传输之前,音视频数据传输装置可以预先建立音视频会话,在某些实施方式中,在不同类型的多个客户端之间的音视频会话中,接收发送客户端发送的音视频数据的步骤之前,该音视频数据传输方法还可以包括:

(1)接收不同类型的多个客户端发送的会话请求,会话请求中携带会话标识及客户端标识;

(2)根据客户端标识为各个客户端更换账号;

(3)当确定不存在与会话标识对应的音视频会话时,根据更换账号后的各个客户端建立音视频会话。

具体地,音视频数据传输装置可以分别接收多个客户端发送的会话请求,例如,分别接收在sdk客户端、小程序客户端、公众号客户端、及浏览器客户端等发送的会话请求,其中,该会话请求中可以携带会话标识及客户端标识等还可以携带其他的信息,例如,客户端的ip地址等,具体内容在此处不作限定。该会话标识可以是将要加入的音视频会话的名称或编号等,该会话标识用于唯一标识音视频会话,可以由数字、字母和/或文字组成等,具体内容在此处不作限定。该客户端标识可以是客户端名称、账号(例如用户名)或编号等,该会话标识用于唯一标识客户端,可以由数字、字母和/或文字组成等,具体内容在此处不作限定。

为了方便不同类型的客户端进行音视频数据交互,音视频数据传输装置可以根据客户端标识及音视频数据传输装置支持的账号等为各个客户端更换账号,以便统一音视频会话中各个客户端的账号类型。例如,当接收到公众号客户端发送的携带客户端标识为“abc”的会话请求时,可以将该公众号客户端客户端的账号更换为“123456”;当接收到浏览器客户端发送的携带客户端标识为“哈哈哈”的会话请求时,可以将该浏览器客户端的账号更换为“456789”。

音视频数据传输装置可以判断是否存在与会话标识对应的音视频会话,若存在与会话标识对应的音视频会话,则可以让客户端加入该音视频会话;若确定不存在与会话标识对应的音视频会话,则可以根据更换账号后的各个客户端建立音视频会话。例如,音视频数据传输装置可以为客户端分配中转ip,并将中转ip发送给客户端,以使得客户端可以根据中转ip与音视频数据传输装置建立安全连接。从而可以通过音视频数据传输装置建立的网络连接,加入到音视频会话。

在某些实施方式中,在不同类型的多个客户端之间的音视频会话中,接收发送客户端发送的音视频数据的步骤之后,该音视频数据传输方法还可以包括:

获取音视频数据的类型;当根据音视频数据的类型确定音视频数据需要解密时,对音视频数据进行解密,得到解密后的音视频数据。

具体地,在发送客户端通过音视频会话发送音视频数据时,音视频数据传输装置可以调用收包线程接收发送客户端发送的音视频数据,并将接收到的音视频数据写入收包缓冲区中。此时,音视频数据传输装置可以调用主线程从收包缓冲区中读取音视频数据,并获取该音视频数据的类型,音视频数据的类型可以包括sdk客户端发送的音视频数据、小程序客户端发送的音视频数据、pstn客户端发送的音视频数据或web客户端发送的音视频数据等。音视频数据传输装置可以根据音视频数据的类型判断该音视频数据是否需要解密,当根据音视频数据的类型确定音视频数据需要解密时,可以对音视频数据进行解密,得到解密后的音视频数据。当根据音视频数据的类型确定音视频数据不需要解密时,不需要对音视频数据进行解密。

例如,当音视频数据是sdk客户端发送时,不需要对音视频数据进行解密;当音视频数据是公众号客户端及浏览器客户端等客户端发送时,需要对音视频数据进行解密,得到解密后的音视频数据。

在某些实施方式中,获取音视频数据的类型,当根据音视频数据的类型确定音视频数据需要解密时,对音视频数据进行解密,得到解密后的音视频数据的步骤可以包括:

(1)调用主线程从音视频数据中提取出包头,并根据包头中的类型字段确定音视频数据的类型;

(2)当根据音视频数据的类型确定音视频数据需要解密时,通过主线程将音视频数据写入待解密缓冲区中;

(3)调用解密线程从待解密缓冲区中读取音视频数据,并根据预设解密密匙对音视频数据进行解密,将解密后的音视频数据写入已解密缓冲区中。

具体地,音视频数据传输装置可以调用主线程从收包缓冲区中读取音视频数据,并对读取到的音视频数据进行解析,从音视频数据中提取出包头,并提取出包头中的类型字段的内容,该包头中的类型字段用于存储音视频数据的类型,此时,可以根据包头中的类型字段的内容确定音视频数据的类型,例如,是sdk客户端发送的音视频数据,还是小程序客户端、pstn客户端、及web客户端等客户端发送的音视频数据等。

音视频数据传输装置可以调用主线程根据音视频数据的类型,判断是否需要对音视频数据进行解密,当根据音视频数据的类型确定音视频数据需要解密时,音视频数据传输装置可以通过主线程将音视频数据写入待解密缓冲区中;当根据音视频数据的类型确定音视频数据不需要解密时,音视频数据传输装置可以通过主线程将音视频数据写入待转码缓冲区中。

当需要解密时,音视频数据传输装置可以调用解密线程从待解密缓冲区中读取音视频数据,并根据预设解密密匙对音视频数据进行解密,将解密后的音视频数据写入已解密缓冲区中,其中,预设解密密匙可以是音视频数据传输装置与客户端建立安全连接时协商好的解密密匙。

需要说明的是,在对音视频数据进行解密时,可以分别对音视频数据中音频数据和视频数据进行解密,当存在多个音频数据和多个视频数据需要进行解密时,音视频数据传输装置可以根据实际需要调用多个解密线程并行对多个音频数据和多个视频数据进行解密。

需要说明的是,主线程可以依据业务场景需求进行配置,以及配置该主线程对应的子线程及子线程的数量,例如,解密线程、转码线程及加密线程等均可以是主线程对应的子线程,可以根据功能和负载等需求启动转码线程及启动转码线程的个数,以便充分利用服务器资源。

本发明实施例涉及到的收包线程、解密线程、转码线程、加密线程、及发包线程等各类线程,可以使用进程或服务器等代替,例如,音视频数据传输装置可以调用解密进程对音视频数据进行解密,该解密进程可以包括一个或多个解密线程等;又例如,音视频数据传输装置可以调用转码服务器对音视频数据进行转码等,可以根据实际需要进行灵活设置,具体内容在此处不作限定。

本发明实施例涉及到的收包缓冲区、待解密缓冲区、已解密缓冲区、待转码缓冲区、待加密缓冲区、已加密缓冲区、及发包缓冲区等各类缓冲区,可以是环形缓冲区队列(例如,单读单写的无锁环形缓冲区队列),也可以是共享内存或者是其他的存储空间等,可以根据实际需要进行灵活设置,具体内容在此处不作限定。各类子线程与主线程之间都通过各类缓冲区交换音视频数据,互不影响,音视频数据的数据格式可以为“数据长度+其他可选约定字段+数据”等,各类子线程与主线程可以实时或间隔预设时间读取对应缓冲区中的数据,具体内容在此处不作限定。

在步骤s102中,获取各个接收客户端所需的编码格式,接收客户端为多个客户端中除发送客户端之外的客户端。

在同一个音视频会话中,当存在发送客户端发送音视频数据时,音视频数据传输装置可以获取该音视频会话中除了发送客户端之外的各个接收客户端所需的编码格式。例如,在加入音视频会话之前,客户端(包括发送客户端和接收客户端)可以通过信令服务器向音视频数据传输装置发送数据传输能力协商请求,该数据传输能力协商请求中可以携带有客户端支持的音频数据格式和视频数据格式等,该音频数据格式和视频数据格式即为音视频数据的编码格式。当接收到数据传输能力协商请求时,音视频数据传输装置可以存储客户端支持的音频数据格式和视频数据格式等,并根据客户端支持的音频数据格式和视频数据格式,以及音视频数据传输装置支持的音频数据格式和视频数据格式,确定与客户端进行音视频数据传输时的编码格式(即数据格式),并通过信令服务器向客户端发送数据传输能力协商响应,数据传输能力协商响应包括与客户端进行音视频数据传输时的编码格式等。

因此,音视频数据传输装置可以向各个接收客户端发送编码格式获取请求,并接收各个接收客户端返回的编码格式,或者是,音视频数据传输装置可以从预先存储的各个客户端所需的编码格式的数据库中,获取各个接收客户端所需的编码格式等,该编码格式包括音频编码格式和视频编码格式等。

在步骤s103中,根据各个接收客户端所需的编码格式,分别对音视频数据进行转码,得到各个接收客户端对应的转码后的音视频数据。

在得到各个接收客户端所需的编码格式后,音视频数据传输装置可以根据音视频数据的编码格式,以及各个接收客户端所需的编码格式,判断是否需要对音视频数据进行转码。音视频数据的编码格式包括可以音频编码格式和视频编码格式,其中,音频编码格式可以包括高级音频编码(advancedaudiocoding,aac)、opus、g.711、g.719、及silk等,视频编码格式可以包括h264、h265、vp8、及vp9等。

由于在该音视频会话中存在不同类型的客户端,因此,各个客户端所需的编码格式可能不一样,此时,当音视频数据的编码格式与各个接收客户端所需的编码格式不一样时,确定需要对音视频数据进行转码,音视频数据传输装置可以根据各个接收客户端所需的编码格式,分别对音视频数据进行转码,得到各个接收客户端对应的转码后的音视频数据。例如,可以根据各个接收客户端所需的音频编码格式分别对音频数据进行转码,得到各个接收客户端对应的转码后的音频数据;以及根据各个接收客户端所需的视频编码格式分别对视频数据进行转码,得到各个接收客户端对应的转码后的视频数据。

可以理解的是,当各个接收客户端中存在某个接收客户端所需的编码格式与发送客户端发送的音视频数据的编码格式一致时,该某个接收客户端对应的音视频数据不需要转码。

例如,当发送客户端的音视频数据中,音频编码格式为g.711,以及视频编码格式为h264时,接收客户端a所需的音频编码格式为aac,以及所需的视频编码格式为h265;接收客户端b所需的音频编码格式为opus,以及所需的视频编码格式为vp9。此时,音视频数据传输装置可以将音频编码格式为g.711转码为aac,以及将视频编码格式为h264转码为h265,得到接收客户端a对应的转码后的音频数据aac和视频数据h265;以及,将音频编码格式为g.711转码为opus,以及将视频编码格式为h264转码为vp9,得到接收客户端b对应的转码后的音频数据opus和视频数据vp9等。

在某些实施方式中,获取各个接收客户端所需的编码格式,根据各个接收客户端所需的编码格式,分别对音视频数据进行转码,得到各个接收客户端对应的转码后的音视频数据的步骤可以包括:

(1)获取各个接收客户端的属性信息,并根据属性信息确定各个接收客户端所需的编码格式;

(2)调用主线程读取解密后的音视频数据,并将解密后的音视频数据写入待转码缓冲区中;

(3)调用音视频转码线程从待转码缓冲区中读取解密后的音视频数据,并根据各个接收客户端所需的编码格式,分别对解密后的音视频数据进行转码,得到各个接收客户端对应的转码后的音视频数据。

具体地,音视频数据传输装置可以获取各个接收客户端的属性信息,该,属性信息可以包括接收客户端的类型、接收客户端支持的音频编码格式和视频编码格式等,例如,音视频数据传输装置可以向各个接收客户端发送属性信息获取请求,并接收各个接收客户端返回的属性信息;或者是,音视频数据传输装置可以在与接收客户端建立连接时预先存储客户端的属性信息,当需要获取属性信息时,可以从存储客户端属性信息的数据库中,获取各个接收客户端的属性信息等。音视频数据传输装置可以根据属性信息确定各个接收客户端所需的编码格式,此时,若音视频数据已经进行解密,则可以调用主线程从已解密缓冲区中读取解密后的音视频数据,并将解密后的音视频数据写入待转码缓冲区中。以及,调用音视频转码线程从待转码缓冲区中读取解密后的音视频数据,并根据各个接收客户端所需的编码格式,分别对解密后的音视频数据进行转码,得到各个接收客户端对应的转码后的音视频数据。

可以理解的是,若音视频数据不需要进行解密,则音视频数据传输装置可以直接调用音视频转码线程从待转码缓冲区中读取音视频数据,并根据各个接收客户端所需的编码格式,分别对音视频数据进行转码,得到各个接收客户端对应的转码后的音视频数据。

在某些实施方式中,调用主线程读取解密后的音视频数据,并将解密后的音视频数据写入待转码缓冲区中,调用音视频转码线程从待转码缓冲区中读取解密后的音视频数据,并根据各个接收客户端所需的编码格式,分别对解密后的音视频数据进行转码,得到各个接收客户端对应的转码后的音视频数据的步骤可以包括:

(a)调用主线程读取解密后的音视频数据,并将解密后的音视频数据中的音频数据写入音频待转码缓冲区中;

(b)通过主线程将解密后的音视频数据中的视频数据写入视频待转码缓冲区中;

(c)调用音频转码线程从音频待转码缓冲区中读取音频数据,并根据各个接收客户端所需的音频编码格式,对音频数据进行转码,得到各个接收客户端对应的转码后的音频数据;

(d)调用视频转码线程从视频待转码缓冲区中读取视频数据,并根据各个接收客户端所需的视频编码格式,对视频数据进行转码,得到各个接收客户端对应的转码后的视频数据;

(e)将各个接收客户端对应的转码后的音频数据和转码后的视频数据,设置为各个接收客户端对应的转码后的音视频数据。

音视频数据传输装置可以分别对音视频数据中的音频数据和视频数据进行处理,具体地,音视频数据传输装置可以调用主线程从已解密缓冲区中读取解密后的音视频数据,并将解密后的音视频数据中的音频数据写入音频待转码缓冲区中,以及将解密后的音视频数据中的视频数据写入视频待转码缓冲区中。此时,音视频数据传输装置可以调用音频转码线程从音频待转码缓冲区中读取音频数据,并根据各个接收客户端所需的音频编码格式,对音频数据进行转码,得到各个接收客户端对应的转码后的音频数据。并且,音视频数据传输装置可以调用视频转码线程从视频待转码缓冲区中读取视频数据,并根据各个接收客户端所需的视频编码格式,对视频数据进行转码,得到各个接收客户端对应的转码后的视频数据。

其中,各个接收客户端对应的转码后的音频数据,以及各个接收客户端对应的转码后的视频数据,即为各个接收客户端对应的转码后的音视频数据。使得音视频数据传输装置可以依据功能及负载差异,将解密、音频转码、视频转码等比较重的功能独立出来,可根据业务需求灵活配置所需功能,并可配置各功能块的资源分配,实现了sdk客户端、小程序客户端、h5客户端、pstn客户端等不同类型的客户端,不受各自音视频编解码差异等限制,解决了不同客户端所需的音视频数据音频编解码格式及视频编解码格式等要求,实现了不同类型的客户端之间音视频数据的融合互通。

需要说明的是,对音频数据和视频数据进行转码可以共用一个线程,例如,转码线程,即音视频数据传输装置可以调用转码线程对音频数据进行转码,也可以调用转码线程对视频数据进行转码。例如,当需要对音频数据进行转码时,音视频数据传输装置可以调用转码线程从待转码缓冲区中读取音频数据,并对音频数据进行转码;当需要对视频数据进行转码时,音视频数据传输装置可以调用转码线程从待转码缓冲区中读取视频数据,并对视频数据进行转码。

在步骤s104中,将各个接收客户端对应的转码后的音视频数据,分别传输送给各个接收客户端。

在得到各个接收客户端对应的转码后的音视频数据,音视频数据传输装置可以将各个接收客户端对应的转码后的音视频数据,分别传输送给各个接收客户端。

在某些实施方式中,将各个接收客户端对应的转码后的音视频数据,分别传输送给各个接收客户端的步骤之前,该音视频数据传输方法还可以包括:

当转码后的音视频数据需要加密时,对转码后的音视频数据进行加密,得到加密后的音视频数据。

将各个接收客户端对应的转码后的音视频数据,分别传输送给各个接收客户端的步骤可以包括:将各个接收客户端对应的加密后的音视频数据,分别传输送给各个接收客户端。

具体地,音视频数据传输装置可以判断转码后的音视频数据是否需要加密,例如,可以根据接收客户端的类型判断转码后的音视频数据是否需要加密,当接收客户为sdk客户端时,可以不需要对音视频数据进行加密;当接收客户为公众号客户端及浏览器客户端等客户端时,可以需要对音视频数据进行加密。又例如,可以根据音视频数据的类型判断转码后的音视频数据是否需要加密。当确定转码后的音视频数据需要加密时,可以对转码后的音视频数据进行加密,得到加密后的音视频数据。

在某些实施方式中,当转码后的音视频数据需要加密时,对转码后的音视频数据进行加密,得到加密后的音视频数据,将各个接收客户端对应的加密后的音视频数据,分别传输送给各个接收客户端的步骤可以包括:

(a)调用主线程读取转码后的音视频数据,并获取转码后的音视频数据的类型;

(b)当根据转码后的音视频数据的类型,确定转码后的音视频数据需要加密时,将转码后的音视频数据写入待加密缓冲区中;

(c)调用加密线程从待加密缓冲区中读取转码后的音视频数据,并根据预设加密密匙对转码后的音视频数据进行加密,将加密后的音视频数据写入已加密缓冲区中;

(d)调用主线程从已加密缓冲区中读取加密后的音视频数据,将加密后的音视频数据写入发包缓冲区中;

(e)调用发包线程从发包缓冲区中读取加密后的音视频数据,并将各个接收客户端对应的加密后的音视频数据,分别传输送给各个接收客户端。

具体地,音视频数据传输装置可以调用主线程从已转码缓冲区中读取转码后的音视频数据(例如,调用主线程从音频已转码缓冲区中读取转码后的音频数据,以及从视频已转码缓冲区中读取转码后的视频数据),并获取转码后的音视频数据的类型,根据该转码后的音视频数据的类型判断是否需要对该转码后的音视频数据进行加密。例如,可以对转码后的音视频数据进行解析,从转码后的音视频数据中提取出包头,并提取出包头中用于存储音视频数据的类型的类型字段,此时,可以根据包头中的类型字段的内容确定音视频数据的类型,例如,是sdk客户端接收的音视频数据,还是小程序客户端、pstn客户端、及web客户端等客户端接收的音视频数据等。

当根据转码后的音视频数据的类型,确定转码后的音视频数据需要加密时,音视频数据传输装置可以将转码后的音视频数据写入发包缓冲区中;当根据转码后的音视频数据的类型,确定转码后的音视频数据需要加密时,音视频数据传输装置可以将转码后的音视频数据写入待加密缓冲区中。

当需要加密时,音视频数据传输装置可以调用加密线程从待加密缓冲区中读取转码后的音视频数据,并根据预设加密密匙对转码后的音视频数据进行加密,将加密后的音视频数据写入已加密缓冲区中;其中,预设加密密匙可以是音视频数据传输装置与客户端建立安全连接时协商好的加密密匙。

需要说明的是,在对音视频数据进行加密时,可以分别对音视频数据中音频数据和视频数据进行加密,当存在多个音频数据和多个视频数据需要进行加密时,音视频数据传输装置可以根据实际需要调用多个加密线程并行对多个音频数据和多个视频数据进行加密。

此时,音视频数据传输装置可以调用主线程从已加密缓冲区中读取加密后的音视频数据,将加密后的音视频数据写入发包缓冲区中。然后调用发包线程从发包缓冲区中读取加密后的音视频数据,并将各个接收客户端对应的加密后的音视频数据,分别传输送给各个接收客户端。

音视频数据传输装置可以依据功能及负载差异,将安全加解密、音频转码、视频转码、及数据传输等比较重的功能独立出来,可根据业务需求灵活配置所需功能,并可配置各功能块的资源分配,可以高效利用资源;以及实现sdk客户端、小程序客户端、pstn客户端、及web客户端等不同类型的客户端,不受各自音视频编解码差异及安全传输要求差异等限制,解决了不同客户端所需的音视频数据音频编解码格式、视频编解码格式、及传输安全性等要求,实现了不同类型的客户端之间音视频数据的融合互通。

需要说明的是,对音视频数据进行加密,以及对音视频数据进行加密,可以共用一个线程,例如,加解密线程,即音视频数据传输装置可以调用加解密线程对音视频数据进行加密,也可以调用加解密线程对音视频数据进行加密。

例如,当需要对音视频数据进行解密时,音视频数据传输装置可以调用加解密线程从待加解密缓冲区中读取音视频数据,并从音视频数据中提取预设字段,该预设字段用于存储加密指令或解密指令,以便加解密线程可以根据加密指令对音视频数据进行加密,或者可以根据解密指令对音视频数据进行解密。当根据预设字段中的解密指令确定是需要进行解密操作时,音视频数据传输装置可以通过加解密线程对音视频数据进行解密,将解密后的音视频数据写入已加解密缓冲区中,该解密后的音视频数据可以包括用于存储已解密信息的字段,以便主线程从已加解密缓冲区中读取到音视频数据后,可以从音视频数据中提取出存储已解密信息的字段,并根据已解密信息确定该音视频数据为解密后的音视频数据。

当需要对音视频数据进行加密时,音视频数据传输装置可以调用加解密线程从待加解密缓冲区中读取音视频数据,并从音视频数据中提取预设字段,当根据预设字段中的加密指令确定是需要进行加密操作时,音视频数据传输装置可以通过加解密线程对音视频数据进行加密,将加密后的音视频数据写入已加解密缓冲区中,该加密后的音视频数据可以包括用于存储已加密信息的字段,以便主线程从已加解密缓冲区中读取到音视频数据后,可以从音视频数据中提取出存储已加密信息的字段,并根据已加密信息确定该音视频数据为加密后的音视频数据。

由上可知,本发明实施例可以在不同类型的多个客户端之间的音视频会话中,接收发送客户端发送的音视频数据,其中,发送客户端为多个客户端中的任意一个客户端;以及,获取各个接收客户端所需的编码格式,其中,接收客户端为多个客户端中除发送客户端之外的客户端;然后根据各个接收客户端所需的编码格式,分别对音视频数据进行转码,得到各个接收客户端对应的转码后的音视频数据;将各个接收客户端对应的转码后的音视频数据,分别传输送给各个接收客户端。该方案不同类型的多个客户端可以加入同一个音视频会话,并在该音视频会话内根据各个接收客户端所需的编码格式对音视频数据进行转码,将转码后的音视频数据分别传输送给各个接收客户端,实现了不同类型客户端在同一个音视频会话内进行音视频数据交互,克服了现有相同客户端才能加入同一个音视频会话进行音视频数据传输的局限性,大大提高了音视频数据传输的灵活性。

根据上述实施例所描述的方法,以下将举例作进一步详细说明。

本实施例以音视频数据传输装置为中转服务器为例,以浏览器客户端、sdk客户端及小程序客户端建立一个音视频会话为例,其中,浏览器客户端为发送音视频数据的客户端,sdk客户端及小程序客户端均为接收音视频数据的客户端。本发明实施例中,浏览器客户端、sdk客户端及小程序客户端等,可以根据实际需要对其发送的音视频数据进行解码操作,以及可以根据实际需要对其接收的音视频数据进行加密操作。为了方便进行举例说明,以下将以sdk客户端发送的音视频数据不需要进行解码,以及接收的音视频数据不需要进行加密为例;以小程序客户端和浏览器客户端发送的音视频数据需要进行解码,以及接收的音视频数据需要进行加密为例。

需要说明的是,一个音视频会话中可能不仅有这3种类型的客户端,本实施例只是为了便于描述所举的例子,不应理解为是对音视频会话中客户端的类型及数量的限定,但不管有多少个客户端及多少类型的客户端,音视频数据的传输过程都是类似的,都可以按照该示例进行理解。

请参阅图5,图5为本发明实施例提供的音视频数据传输方法的另一流程示意图。该方法流程可以包括:

s201、浏览器客户端向中转服务器发送音视频数据。

在包括浏览器客户端、sdk客户端及小程序客户端的同一个音视频会话内,各个客户端之间可以进行音视频数据的融合互通,当浏览器客户端需要向sdk客户端及小程序客户端发送音视频数据时,浏览器客户端首先通过音视频会话向中转服务器发送音视频数据,浏览器客户端发送的该音视频数据可以称为上行音视频数据。

此时,中转服务器可以调用收包线程接收浏览器客户端发送的音视频数据,并通过收包线程将接收到的音视频数据写入收包缓冲区中,例如,如图6所示。

s202、中转服务器对音视频数据进行解密及转码。

在接收到浏览器客户端发送的音视频数据后,中转服务器可以调用主线程从收包缓冲区中读取音视频数据,例如,如图6所示,可以通过主线程对读取到的音视频数据进行解析,从音视频数据中提取出包头,并提取出包头中的类型字段的内容,该包头中的类型字段用于存储音视频数据的类型,此时,可以根据包头中的类型字段的内容确定音视频数据的类型。当根据音视频数据的类型确定为浏览器客户端发送的音视频数据时,可以判定需要对该音视频数据进行解密,中转服务器可以通过主线程将音视频数据写入待加解密缓冲区中,以使得中转服务器可以调用加解密线程从待加解密缓冲区中读取音视频数据,其中,该待加解密缓冲区可以存储待解密的音视频数据,也可以存储待加密的音视频数据;该加解密线程可以对音视频数据进行解密,也可以对音视频数据进行加密。

当需要对音视频数据进行解密时,中转服务器可以调用加解密线程从待加解密缓冲区中读取音视频数据,并从音视频数据中提取预设字段,该预设字段用于存储加密指令或解密指令,以便加解密线程可以根据加密指令对音视频数据进行加密,或者可以根据解密指令对音视频数据进行解密。当根据预设字段中的解密指令确定是需要进行解密操作时,中转服务器可以通过加解密线程根据预设解密密匙对音视频数据进行解密,该预设解密密匙可以是音视频数据传输装置与客户端建立安全连接时协商好的解密密匙。然后将解密后的音视频数据写入已加解密缓冲区中,该解密后的音视频数据可以包括用于存储已解密信息的字段,以便主线程从已加解密缓冲区中读取到音视频数据后,可以从音视频数据中提取出存储已解密信息的字段,并根据已解密信息确定该音视频数据为解密后的音视频数据。

需要说明的是,图6中加解密线程可以包括加解密线程1至加解密线程n,其中,n的取值可根据实际需要进行设置,具体取值在此处不作限定,中转服务器可以根据实际需要调用预设数量的加解密线程对音视频数据进行解密。

在对音视频数据进行解密后,中转服务器可以获取sdk客户端和小程序客户端所需的编码格式,该编码格式包括可以音频编码格式和视频编码格式。当根据sdk客户端和小程序客户端所需的编码格式确定需要对音视频数据进行转码时,中转服务器可以调用主线程从已加解密缓冲区中读取音视频数据,并根据该音视频数据中用于存储已解密信息的字段,获知该该音视频数据为解密后的音视频数据,此时可以将解密后的音视频数据写入待转码缓冲区中,例如,将解密后的音视频数据中的音频数据写入音频待转码缓冲区中,以及将解密后的音视频数据中的视频数据写入视频待转码缓冲区中。

中转服务器可以调用音频转码线程1从音频待转码缓冲区中读取音频数据,并根据sdk客户端所需的音频编码格式,对音频数据进行转码,得到sdk客户端对应的转码后的音频数据,并将该转码后的音频数据写入音频已转码缓冲区中。以及,调用音频转码线程n从音频待转码缓冲区中读取音频数据,并根据小程序客户端所需的音频编码格式,对音频数据进行转码,得到小程序客户端对应的转码后的音频数据,并将该转码后的音频数据写入音频已转码缓冲区中。

中转服务器可以调用视频转码线程1从视频待转码缓冲区中读取视频数据,并根据sdk客户端所需的视频编码格式,对视频数据进行转码,得到sdk客户端对应的转码后的视频数据,并将该转码后的视频数据写入视频已转码缓冲区中。以及,调用视频转码线程n从视频待转码缓冲区中读取视频数据,并根据小程序客户端所需的视频编码格式,对视频数据进行转码,得到小程序客户端对应的转码后的视频数据,并将该转码后的视频数据写入视频已转码缓冲区中。

需要说明的是,图6中音频转码线程可以包括音频转码线程1至音频转码线程n,其中,n的取值可根据实际需要进行设置,具体取值在此处不作限定。视频转码线程也可以包括视频转码线程1至视频转码线程n,其中,n的取值可根据实际需要进行设置,具体取值在此处不作限定,中转服务器可以根据实际需要调用预设数量的音频转码线程对音频数据进行转码,以及可以根据实际需要调用预设数量的视频转码线程对视频数据进行转码。

s203、中转服务器向sdk客户端发送转码后的音视频数据。

在得到sdk客户端对应的转码后的音视频数据,中转服务器可以调用主线程从音频已转码缓冲区中读取sdk客户端对应的转码后的音频数据,以及从视频已转码缓冲区中读取sdk客户端对应的转码后的视频数据,并根据sdk客户端所需音视频数据的类型,确定不需要对sdk客户端对应的转码后的音视频数据进行加密,此时,中转服务器可以通过主线程将sdk客户端对应的转码后的音频数据和视频数据写入发包缓冲区中。然后,中转服务器可以调用发包线程从发包缓冲区中读取sdk客户端对应的转码后的音视频数据,并通过发包线程将sdk客户端对应的转码后的音视频数据发送给sdk客户端,该发包线程发送的音视频数据即为下行音视频数据,例如,如图6所示。

s204、中转服务器对转码后的音视频数据进行加密。

在得到小程序客户端对应的转码后的音视频数据后,中转服务器可以调用主线程从音频已转码缓冲区中读取小程序客户端对应的转码后的音频数据,以及从视频已转码缓冲区中读取小程序客户端对应的转码后的视频数据,并根据小程序客户端所需音视频数据的类型,确定需要对小程序客户端对应的转码后的音视频数据进行加密,此时,中转服务器可以调用主线程将小程序客户端对应的转码后的音视频数据(包括音频数据和视频数据)写入待加解密缓冲区中。

当需要对音视频数据加密时,中转服务器可以调用加解密线程从待加解密缓冲区中读取小程序客户端对应的转码后的音视频数据,并从该音视频数据中提取预设字段,当根据预设字段中的加密指令确定是需要进行加密操作时,中转服务器可以通过加解密线程对音视频数据进行加密,例如,分别对音视频数据中音频数据和视频数据进行加密,将加密后的音视频数据写入已加解密缓冲区中,该加密后的音视频数据可以包括用于存储已加密信息的字段,以便主线程从已加解密缓冲区中读取到音视频数据后,可以从音视频数据中提取出存储已加密信息的字段,并根据已加密信息确定该音视频数据为加密后的音视频数据。

s205、中转服务器向小程序客户端发送加密后的音视频数据。

中转服务器可以调用主线程从已加解密缓冲区中读取小程序客户端对应的音视频数据,并将该音视频数据写入发包缓冲区中。然后,中转服务器可以调用发包线程从发包缓冲区中读取小程序客户端对应的加密后的音视频数据,并通过发包线程将小程序客户端对应的加密后的音视频数据发送给小程序客户端,该发包线程发送的音视频数据即为下行音视频数据,例如,如图6所示。

本发明实施例中转服务器可以依据加解密及转码等功能,以及各个线程的负载差异等,将加解密、音频转码、视频转码、及数据传输等比较重的功能独立出来,可根据业务需求灵活配置各个线程执行所需功能,从而可以高效利用资源;以及实现不同类型的客户端不受各自音视频编解码差异及安全传输要求差异等限制,满足了不同类型的客户端所需的音视频数据音频编解码格式、视频编解码格式、及传输安全性等要求,实现了不同类型的客户端之间音视频数据的融合互通,大大提高了音视频数据传输的灵活性。。

为便于更好的实施本发明实施例提供的音视频数据传输方法,本发明实施例还提供一种基于上述音视频数据传输方法的装置。其中名词的含义与上述音视频数据传输方法中相同,具体实现细节可以参考方法实施例中的说明。

请参阅图7,图7为本发明实施例提供的音视频数据传输装置的结构示意图,其中该音视频数据传输装置可以包括第一接收单元301、获取单元302、转码单元303及传输单元304等。

其中,第一接收单元301,用于在不同类型的多个客户端之间的音视频会话中,接收发送客户端发送的音视频数据,发送客户端为多个客户端中的任意一个客户端。

其中,不同类型的多个客户端可以包括sdk客户端、小程序客户端、公众号客户端、浏览器客户端、及pstn客户端等,还可以包括其他类型的客户端,具体内容在此处不作限定。

不同类型的多个客户端可以是每个客户端分别对应不同的类型,例如,当多个客户端为3个时,这3个客户端分别对应sdk客户端、浏览器客户端和pstn客户端等不同类型,因此总共有3种不同的类型的客户端。

不同类型的多个客户端还可以是包括多种不同的类型,且每种不同的类型可以包括一个或多个客户端,例如,当多个客户端为6个时,这6个客户端中可以包括sdk客户端、浏览器客户端和公众号客户端等3种不同类型,其中,sdk客户端包括一个、浏览器客户端包括2个和公众号客户端包括3个。

不同类型的多个客户端可以加入同一个音视频会话,并在该音视频会话中进行音视频数据交互。在同一个音视频会话中不同类型的多个客户端,发送音视频数据的发送客户端可以是多个客户端中的任意一个客户端,而接收音视频数据的接收客户端可以是多个客户端中的任意一个客户端。第一接收单元301可以接收发送客户端通过音视频会话发送的音视频数据。

例如,在sdk客户端、小程序客户端、公众号客户端、浏览器客户端、及pstn客户端等组成的音视频会话中,浏览器客户端可以是发送客户端,sdk客户端、小程序客户端、公众号客户端、及pstn客户端可以是接收客户端。

在通过音视频会话进行音视频数据传输之前,音视频数据传输装置可以预先建立音视频会话,在某些实施方式中,如图10所示,音视频数据传输装置还可以包括第二接收单元307、更换单元308及建立单元309等,具体可以如下:

第二接收单元307,用于接收不同类型的多个客户端发送的会话请求,会话请求中携带会话标识及客户端标识;

更换单元308,用于根据客户端标识为各个客户端更换账号;

建立单元309,用于当确定不存在与会话标识对应的音视频会话时,根据更换账号后的各个客户端建立音视频会话。

具体地,第二接收单元307可以分别接收多个客户端发送的会话请求,例如,分别接收在sdk客户端、小程序客户端、公众号客户端、及浏览器客户端等发送的会话请求,其中,该会话请求中可以携带会话标识及客户端标识等还可以携带其他的信息,例如,客户端的ip地址等,具体内容在此处不作限定。该会话标识可以是将要加入的音视频会话的名称或编号等,该会话标识用于唯一标识音视频会话,可以由数字、字母和/或文字组成等,具体内容在此处不作限定。该客户端标识可以是客户端名称、账号(例如用户名)或编号等,该会话标识用于唯一标识客户端,可以由数字、字母和/或文字组成等,具体内容在此处不作限定。

为了方便不同类型的客户端进行音视频数据交互,更换单元308可以根据客户端标识及音视频数据传输装置支持的账号等为各个客户端更换账号,以便统一音视频会话中各个客户端的账号类型。例如,当接收到公众号客户端发送的携带客户端标识为“abc”的会话请求时,可以将该公众号客户端客户端的账号更换为“123456”;当接收到浏览器客户端发送的携带客户端标识为“哈哈哈”的会话请求时,可以将该浏览器客户端的账号更换为“456789”。

建立单元309可以判断是否存在与会话标识对应的音视频会话,若存在与会话标识对应的音视频会话,则可以让客户端加入该音视频会话;若确定不存在与会话标识对应的音视频会话,则可以根据更换账号后的各个客户端建立音视频会话。例如,音视频数据传输装置可以为客户端分配中转ip,并将中转ip发送给客户端,以使得客户端可以根据中转ip与音视频数据传输装置建立安全连接。从而可以通过音视频数据传输装置建立的网络连接,加入到音视频会话。

在某些实施方式中,如图8所示,音视频数据传输装置还可以包括:解密单元305,用于获取音视频数据的类型,当根据音视频数据的类型确定音视频数据需要解密时,对音视频数据进行解密,得到解密后的音视频数据。

具体地,在发送客户端通过音视频会话发送音视频数据时,第一接收单元301可以调用收包线程接收发送客户端发送的音视频数据,并将接收到的音视频数据写入收包缓冲区中。此时,解密单元305可以调用主线程从收包缓冲区中读取音视频数据,并获取该音视频数据的类型,音视频数据的类型可以包括sdk客户端发送的音视频数据、小程序客户端发送的音视频数据、pstn客户端发送的音视频数据或web客户端发送的音视频数据等。解密单元305可以根据音视频数据的类型判断该音视频数据是否需要解密,当根据音视频数据的类型确定音视频数据需要解密时,解密单元305可以对音视频数据进行解密,得到解密后的音视频数据。当根据音视频数据的类型确定音视频数据不需要解密时,不需要对音视频数据进行解密。

例如,当音视频数据是sdk客户端发送时,不需要对音视频数据进行解密;当音视频数据是公众号客户端及浏览器客户端等客户端发送时,需要对音视频数据进行解密,得到解密后的音视频数据。

在某些实施方式中,解密单元305具体可以用于:

调用主线程从音视频数据中提取出包头,并根据包头中的类型字段确定音视频数据的类型;

当根据音视频数据的类型确定音视频数据需要解密时,通过主线程将音视频数据写入待解密缓冲区中;

调用解密线程从待解密缓冲区中读取音视频数据,并根据预设解密密匙对音视频数据进行解密,将解密后的音视频数据写入已解密缓冲区中。

具体地,解密单元305可以调用主线程从收包缓冲区中读取音视频数据,并对读取到的音视频数据进行解析,从音视频数据中提取出包头,并提取出包头中的类型字段的内容,该包头中的类型字段用于存储音视频数据的类型,此时,可以根据包头中的类型字段的内容确定音视频数据的类型,例如,是sdk客户端发送的音视频数据,还是小程序客户端、pstn客户端、及web客户端等客户端发送的音视频数据等。

解密单元305可以调用主线程根据音视频数据的类型,判断是否需要对音视频数据进行解密,当根据音视频数据的类型确定音视频数据需要解密时,音视频数据传输装置可以通过主线程将音视频数据写入待解密缓冲区中;当根据音视频数据的类型确定音视频数据不需要解密时,音视频数据传输装置可以通过主线程将音视频数据写入待转码缓冲区中。

当需要解密时,解密单元305可以调用解密线程从待解密缓冲区中读取音视频数据,并根据预设解密密匙对音视频数据进行解密,将解密后的音视频数据写入已解密缓冲区中,其中,预设解密密匙可以是音视频数据传输装置与客户端建立安全连接时协商好的解密密匙。

需要说明的是,在对音视频数据进行解密时,可以分别对音视频数据中音频数据和视频数据进行解密,当存在多个音频数据和多个视频数据需要进行解密时,音视频数据传输装置可以根据实际需要调用多个解密线程并行对多个音频数据和多个视频数据进行解密。

需要说明的是,主线程可以依据业务场景需求进行配置,以及配置该主线程对应的子线程及子线程的数量,例如,解密线程、转码线程及加密线程等均可以是主线程对应的子线程,可以根据功能和负载等需求启动转码线程及启动转码线程的个数,以便充分利用服务器资源。

本发明实施例涉及到的收包线程、解密线程、转码线程、加密线程、及发包线程等各类线程,可以使用进程或服务器等代替,例如,音视频数据传输装置可以调用解密进程对音视频数据进行解密,该解密进程可以包括一个或多个解密线程等;又例如,音视频数据传输装置可以调用转码服务器对音视频数据进行转码等,可以根据实际需要进行灵活设置,具体内容在此处不作限定。

本发明实施例涉及到的收包缓冲区、待解密缓冲区、已解密缓冲区、待转码缓冲区、待加密缓冲区、已加密缓冲区、及发包缓冲区等各类缓冲区,可以是环形缓冲区队列(例如,单读单写的无锁环形缓冲区队列),也可以是共享内存或者是其他的存储空间等,可以根据实际需要进行灵活设置,具体内容在此处不作限定。各类子线程与主线程之间都通过各类缓冲区交换音视频数据,互不影响,音视频数据的数据格式可以为“数据长度+其他可选约定字段+数据”等,各类子线程与主线程可以实时或间隔预设时间读取对应缓冲区中的数据,具体内容在此处不作限定。

获取单元302,用于获取各个接收客户端所需的编码格式,接收客户端为多个客户端中除发送客户端之外的客户端。

在同一个音视频会话中,当存在发送客户端发送音视频数据时,获取单元302可以获取该音视频会话中除了发送客户端之外的各个接收客户端所需的编码格式。例如,在加入音视频会话之前,客户端(包括发送客户端和接收客户端)可以通过信令服务器向音视频数据传输装置发送数据传输能力协商请求,该数据传输能力协商请求中可以携带有客户端支持的音频数据格式和视频数据格式等,该音频数据格式和视频数据格式即为音视频数据的编码格式。当接收到数据传输能力协商请求时,音视频数据传输装置可以存储客户端支持的音频数据格式和视频数据格式等,并根据客户端支持的音频数据格式和视频数据格式,以及音视频数据传输装置支持的音频数据格式和视频数据格式,确定与客户端进行音视频数据传输时的编码格式(即数据格式),并通过信令服务器向客户端发送数据传输能力协商响应,数据传输能力协商响应包括与客户端进行音视频数据传输时的编码格式等。

因此,获取单元302可以向各个接收客户端发送编码格式获取请求,并接收各个接收客户端返回的编码格式,或者是,获取单元302可以从预先存储的各个客户端所需的编码格式的数据库中,获取各个接收客户端所需的编码格式等,该编码格式包括音频编码格式和视频编码格式等。

转码单元303,用于根据各个接收客户端所需的编码格式,分别对音视频数据进行转码,得到各个接收客户端对应的转码后的音视频数据。

在得到各个接收客户端所需的编码格式后,转码单元303可以根据音视频数据的编码格式,以及各个接收客户端所需的编码格式,判断是否需要对音视频数据进行转码。音视频数据的编码格式包括可以音频编码格式和视频编码格式,其中,音频编码格式可以包括高级音频编码(advancedaudiocoding,aac)、opus、g.711、g.719、及silk等,视频编码格式可以包括h264、h265、vp8、及vp9等。

由于在该音视频会话中存在不同类型的客户端,因此,各个客户端所需的编码格式可能不一样,此时,当音视频数据的编码格式与各个接收客户端所需的编码格式不一样时,确定需要对音视频数据进行转码,转码单元303可以根据各个接收客户端所需的编码格式,分别对音视频数据进行转码,得到各个接收客户端对应的转码后的音视频数据。例如,可以根据各个接收客户端所需的音频编码格式分别对音频数据进行转码,得到各个接收客户端对应的转码后的音频数据;以及根据各个接收客户端所需的视频编码格式分别对视频数据进行转码,得到各个接收客户端对应的转码后的视频数据。

可以理解的是,当各个接收客户端中存在某个接收客户端所需的编码格式与发送客户端发送的音视频数据的编码格式一致时,该某个接收客户端对应的音视频数据不需要转码。

例如,当发送客户端的音视频数据中,音频编码格式为g.711,以及视频编码格式为h264时,接收客户端a所需的音频编码格式为aac,以及所需的视频编码格式为h265;接收客户端b所需的音频编码格式为opus,以及所需的视频编码格式为vp9。此时,转码单元303可以将音频编码格式为g.711转码为aac,以及将视频编码格式为h264转码为h265,得到接收客户端a对应的转码后的音频数据aac和视频数据h265;以及,将音频编码格式为g.711转码为opus,以及将视频编码格式为h264转码为vp9,得到接收客户端b对应的转码后的音频数据opus和视频数据vp9等。

在某些实施方式中,获取单元302具体可以用于:获取各个接收客户端的属性信息,并根据属性信息确定各个接收客户端所需的编码格式。

转码单元303可以包括写入子单元及转码子单元等,具体可以如下:

写入子单元,用于调用主线程读取解密后的音视频数据,并将解密后的音视频数据写入待转码缓冲区中;

转码子单元,用于调用音视频转码线程从待转码缓冲区中读取解密后的音视频数据,并根据各个接收客户端所需的编码格式,分别对解密后的音视频数据进行转码,得到各个接收客户端对应的转码后的音视频数据。

具体地,获取单元302可以获取各个接收客户端的属性信息,该,属性信息可以包括接收客户端的类型、接收客户端支持的音频编码格式和视频编码格式等,例如,获取单元302可以向各个接收客户端发送属性信息获取请求,并接收各个接收客户端返回的属性信息;或者是,获取单元302可以在与接收客户端建立连接时预先存储客户端的属性信息,当需要获取属性信息时,可以从存储客户端属性信息的数据库中,获取各个接收客户端的属性信息等。获取单元302可以根据属性信息确定各个接收客户端所需的编码格式,此时,若音视频数据已经进行解密,则写入子单元可以调用主线程从已解密缓冲区中读取解密后的音视频数据,并将解密后的音视频数据写入待转码缓冲区中。以及,转码子单元调用音视频转码线程从待转码缓冲区中读取解密后的音视频数据,并根据各个接收客户端所需的编码格式,分别对解密后的音视频数据进行转码,得到各个接收客户端对应的转码后的音视频数据。

可以理解的是,若音视频数据不需要进行解密,则转码子单元可以直接调用音视频转码线程从待转码缓冲区中读取音视频数据,并根据各个接收客户端所需的编码格式,分别对音视频数据进行转码,得到各个接收客户端对应的转码后的音视频数据。

在某些实施方式中,写入子单元具体可以用于:调用主线程读取解密后的音视频数据,并将解密后的音视频数据中的音频数据写入音频待转码缓冲区中;通过主线程将解密后的音视频数据中的视频数据写入视频待转码缓冲区中。

转码子单元具体可以用于:

调用音频转码线程从音频待转码缓冲区中读取音频数据,并根据各个接收客户端所需的音频编码格式,对音频数据进行转码,得到各个接收客户端对应的转码后的音频数据;

调用视频转码线程从视频待转码缓冲区中读取视频数据,并根据各个接收客户端所需的视频编码格式,对视频数据进行转码,得到各个接收客户端对应的转码后的视频数据;

将各个接收客户端对应的转码后的音频数据和转码后的视频数据,设置为各个接收客户端对应的转码后的音视频数据。

写入子单元及转码子单元等可以分别对音视频数据中的音频数据和视频数据进行处理,具体地,写入子单元可以调用主线程从已解密缓冲区中读取解密后的音视频数据,并将解密后的音视频数据中的音频数据写入音频待转码缓冲区中,以及将解密后的音视频数据中的视频数据写入视频待转码缓冲区中。此时,转码子单元可以调用音频转码线程从音频待转码缓冲区中读取音频数据,并根据各个接收客户端所需的音频编码格式,对音频数据进行转码,得到各个接收客户端对应的转码后的音频数据。并且,转码子单元可以调用视频转码线程从视频待转码缓冲区中读取视频数据,并根据各个接收客户端所需的视频编码格式,对视频数据进行转码,得到各个接收客户端对应的转码后的视频数据。

其中,各个接收客户端对应的转码后的音频数据,以及各个接收客户端对应的转码后的视频数据,即为各个接收客户端对应的转码后的音视频数据。使得音视频数据传输装置可以依据功能及负载差异,将解密、音频转码、视频转码等比较重的功能独立出来,可根据业务需求灵活配置所需功能,并可配置各功能块的资源分配,实现了sdk客户端、小程序客户端、h5客户端、pstn客户端等不同类型的客户端,不受各自音视频编解码差异等限制,解决了不同客户端所需的音视频数据音频编解码格式及视频编解码格式等要求,实现了不同类型的客户端之间音视频数据的融合互通。

需要说明的是,对音频数据和视频数据进行转码可以共用一个线程,例如,转码线程,即转码子单元可以调用转码线程对音频数据进行转码,也可以调用转码线程对视频数据进行转码。例如,当需要对音频数据进行转码时,转码子单元可以调用转码线程从待转码缓冲区中读取音频数据,并对音频数据进行转码;当需要对视频数据进行转码时,转码子单元可以调用转码线程从待转码缓冲区中读取视频数据,并对视频数据进行转码。

传输单元304,用于将各个接收客户端对应的转码后的音视频数据,分别传输送给各个接收客户端。

在得到各个接收客户端对应的转码后的音视频数据,传输单元304可以将各个接收客户端对应的转码后的音视频数据,分别传输送给各个接收客户端。

在某些实施方式中,如图9所示,音视频数据传输装置还可以包括:加密单元306,用于当转码后的音视频数据需要加密时,对转码后的音视频数据进行加密,得到加密后的音视频数据。

传输单元304具体可以用于:将各个接收客户端对应的加密后的音视频数据,分别传输送给各个接收客户端。

具体地,加密单元306可以判断转码后的音视频数据是否需要加密,例如,可以根据接收客户端的类型判断转码后的音视频数据是否需要加密,当接收客户为sdk客户端时,可以不需要对音视频数据进行加密;当接收客户为公众号客户端及浏览器客户端等客户端时,可以需要对音视频数据进行加密。又例如,可以根据音视频数据的类型判断转码后的音视频数据是否需要加密。当确定转码后的音视频数据需要加密时,加密单元306可以对转码后的音视频数据进行加密,得到加密后的音视频数据。

在某些实施方式中,加密单元306具体可以用于:

调用主线程读取转码后的音视频数据,并获取转码后的音视频数据的类型;

当根据转码后的音视频数据的类型,确定转码后的音视频数据需要加密时,将转码后的音视频数据写入待加密缓冲区中;

调用加密线程从待加密缓冲区中读取转码后的音视频数据,并根据预设加密密匙对转码后的音视频数据进行加密,将加密后的音视频数据写入已加密缓冲区中;

传输单元还具体用于:调用主线程从已加密缓冲区中读取加密后的音视频数据,将加密后的音视频数据写入发包缓冲区中;

调用发包线程从发包缓冲区中读取加密后的音视频数据,并将各个接收客户端对应的加密后的音视频数据,分别传输送给各个接收客户端。

具体地,加密单元306可以调用主线程从已转码缓冲区中读取转码后的音视频数据,并获取转码后的音视频数据的类型,根据该转码后的音视频数据的类型判断是否需要对该转码后的音视频数据进行加密。例如,可以对转码后的音视频数据进行解析,从转码后的音视频数据中提取出包头,并提取出包头中用于存储音视频数据的类型的类型字段,此时,可以根据包头中的类型字段的内容确定音视频数据的类型,例如,是sdk客户端接收的音视频数据,还是小程序客户端、pstn客户端、及web客户端等客户端接收的音视频数据等。

当根据转码后的音视频数据的类型,确定转码后的音视频数据需要加密时,加密单元306可以将转码后的音视频数据写入发包缓冲区中;当根据转码后的音视频数据的类型,确定转码后的音视频数据需要加密时,加密单元306可以将转码后的音视频数据写入待加密缓冲区中。

当需要加密时,加密单元306可以调用加密线程从待加密缓冲区中读取转码后的音视频数据,并根据预设加密密匙对转码后的音视频数据进行加密,将加密后的音视频数据写入已加密缓冲区中;其中,预设加密密匙可以是音视频数据传输装置与客户端建立安全连接时协商好的加密密匙。

需要说明的是,在对音视频数据进行加密时,可以分别对音视频数据中音频数据和视频数据进行加密,当存在多个音频数据和多个视频数据需要进行加密时,加密单元306可以根据实际需要调用多个加密线程并行对多个音频数据和多个视频数据进行加密。

此时,加密单元306可以调用主线程从已加密缓冲区中读取加密后的音视频数据,将加密后的音视频数据写入发包缓冲区中。然后调用发包线程从发包缓冲区中读取加密后的音视频数据,并将各个接收客户端对应的加密后的音视频数据,分别传输送给各个接收客户端。

音视频数据传输装置可以依据功能及负载差异,将安全加解密、音频转码、视频转码、及数据传输等比较重的功能独立出来,可根据业务需求灵活配置所需功能,并可配置各功能块的资源分配,可以高效利用资源;以及实现sdk客户端、小程序客户端、pstn客户端、及web客户端等不同类型的客户端,不受各自音视频编解码差异及安全传输要求差异等限制,解决了不同客户端所需的音视频数据音频编解码格式、视频编解码格式、及传输安全性等要求,实现了不同类型的客户端之间音视频数据的融合互通。

需要说明的是,对音视频数据进行加密,以及对音视频数据进行加密,可以共用一个线程,例如,加解密线程,即加密单元306可以调用加解密线程对音视频数据进行加密,也可以调用加解密线程对音视频数据进行加密。

例如,当需要对音视频数据进行解密时,加密单元306可以调用加解密线程从待加解密缓冲区中读取音视频数据,并从音视频数据中提取预设字段,该预设字段用于存储加密指令或解密指令,以便加解密线程可以根据加密指令对音视频数据进行加密,或者可以根据解密指令对音视频数据进行解密。当根据预设字段中的解密指令确定是需要进行解密操作时,加密单元306可以通过加解密线程对音视频数据进行解密,将解密后的音视频数据写入已加解密缓冲区中,该解密后的音视频数据可以包括用于存储已解密信息的字段,以便主线程从已加解密缓冲区中读取到音视频数据后,可以从音视频数据中提取出存储已解密信息的字段,并根据已解密信息确定该音视频数据为解密后的音视频数据。

当需要对音视频数据进行加密时,加密单元306可以调用加解密线程从待加解密缓冲区中读取音视频数据,并从音视频数据中提取预设字段,当根据预设字段中的加密指令确定是需要进行加密操作时,加密单元306可以通过加解密线程对音视频数据进行加密,将加密后的音视频数据写入已加解密缓冲区中,该加密后的音视频数据可以包括用于存储已加密信息的字段,以便主线程从已加解密缓冲区中读取到音视频数据后,可以从音视频数据中提取出存储已加密信息的字段,并根据已加密信息确定该音视频数据为加密后的音视频数据。

由上可知,本发明实施例第一接收单元301可以在不同类型的多个客户端之间的音视频会话中,接收发送客户端发送的音视频数据,其中,发送客户端为多个客户端中的任意一个客户端;以及,由获取单元302获取各个接收客户端所需的编码格式,其中,接收客户端为多个客户端中除发送客户端之外的客户端;然后转码单元303可以根据各个接收客户端所需的编码格式,分别对音视频数据进行转码,得到各个接收客户端对应的转码后的音视频数据;由传输单元304将各个接收客户端对应的转码后的音视频数据,分别传输送给各个接收客户端。该方案不同类型的多个客户端可以加入同一个音视频会话,并在该音视频会话内根据各个接收客户端所需的编码格式对音视频数据进行转码,将转码后的音视频数据分别传输送给各个接收客户端,实现了不同类型客户端在同一个音视频会话内进行音视频数据交互,克服了现有相同客户端才能加入同一个音视频会话进行音视频数据传输的局限性,大大提高了音视频数据传输的灵活性。

本发明实施例还提供一种服务器,该服务器可以是中转服务器,如图11所示,其示出了本发明实施例所涉及的服务器的结构示意图,具体来讲:

该服务器可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图11中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:

处理器401是该服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行服务器的各种功能和处理数据,从而对服务器进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。

存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。

服务器还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。

该服务器还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。

尽管未示出,服务器还可以包括显示单元等,在此不再赘述。具体在本实施例中,服务器中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:

在不同类型的多个客户端之间的音视频会话中,接收发送客户端发送的音视频数据,发送客户端为多个客户端中的任意一个客户端;获取各个接收客户端所需的编码格式,接收客户端为多个客户端中除发送客户端之外的客户端;根据各个接收客户端所需的编码格式,分别对音视频数据进行转码,得到各个接收客户端对应的转码后的音视频数据;将各个接收客户端对应的转码后的音视频数据,分别传输送给各个接收客户端。

可选地,在不同类型的多个客户端之间的音视频会话中,接收发送客户端发送的音视频数据的步骤之后,该音视频传输方法还可以包括:获取音视频数据的类型;当根据音视频数据的类型确定音视频数据需要解密时,对音视频数据进行解密,得到解密后的音视频数据。

可选地,将各个接收客户端对应的转码后的音视频数据,分别传输送给各个接收客户端的步骤之前,该音视频数据传输方法还可以包括:当转码后的音视频数据需要加密时,对转码后的音视频数据进行加密,得到加密后的音视频数据;将各个接收客户端对应的转码后的音视频数据,分别传输送给各个接收客户端的步骤可以包括:将各个接收客户端对应的加密后的音视频数据,分别传输送给各个接收客户端。

由上可知,本发明实施例可以在不同类型的多个客户端之间的音视频会话中,接收发送客户端发送的音视频数据,其中,发送客户端为多个客户端中的任意一个客户端;以及,获取各个接收客户端所需的编码格式,其中,接收客户端为多个客户端中除发送客户端之外的客户端;然后根据各个接收客户端所需的编码格式,分别对音视频数据进行转码,得到各个接收客户端对应的转码后的音视频数据;将各个接收客户端对应的转码后的音视频数据,分别传输送给各个接收客户端。该方案不同类型的多个客户端可以加入同一个音视频会话,并在该音视频会话内根据各个接收客户端所需的编码格式对音视频数据进行转码,将转码后的音视频数据分别传输送给各个接收客户端,实现了不同类型客户端在同一个音视频会话内进行音视频数据交互,克服了现有相同客户端才能加入同一个音视频会话进行音视频数据传输的局限性,大大提高了音视频数据传输的灵活性。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对音视频数据传输方法的详细描述,此处不再赘述。

本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。

为此,本发明实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的任一种音视频数据传输方法中的步骤。例如,该指令可以执行如下步骤:

在不同类型的多个客户端之间的音视频会话中,接收发送客户端发送的音视频数据,发送客户端为多个客户端中的任意一个客户端;获取各个接收客户端所需的编码格式,接收客户端为多个客户端中除发送客户端之外的客户端;根据各个接收客户端所需的编码格式,分别对音视频数据进行转码,得到各个接收客户端对应的转码后的音视频数据;将各个接收客户端对应的转码后的音视频数据,分别传输送给各个接收客户端。

可选地,在不同类型的多个客户端之间的音视频会话中,接收发送客户端发送的音视频数据的步骤之后,该音视频传输方法还可以包括:获取音视频数据的类型;当根据音视频数据的类型确定音视频数据需要解密时,对音视频数据进行解密,得到解密后的音视频数据。

可选地,将各个接收客户端对应的转码后的音视频数据,分别传输送给各个接收客户端的步骤之前,该音视频数据传输方法还可以包括:当转码后的音视频数据需要加密时,对转码后的音视频数据进行加密,得到加密后的音视频数据;将各个接收客户端对应的转码后的音视频数据,分别传输送给各个接收客户端的步骤可以包括:将各个接收客户端对应的加密后的音视频数据,分别传输送给各个接收客户端。

以上各个操作的具体实施可参见前面的实施例,在此不再赘述。

其中,该存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取记忆体(ram,randomaccessmemory)、磁盘或光盘等。

由于该存储介质中所存储的指令,可以执行本发明实施例所提供的任一种音视频数据传输方法中的步骤,因此,可以实现本发明实施例所提供的任一种音视频数据传输方法所能实现的有益效果,详见前面的实施例,在此不再赘述。

以上对本发明实施例所提供的一种音视频数据传输方法、装置及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1