一种多路音视频传输方法及装置
技术领域
本发明涉及音视频流的网络传输领域,尤其涉及一种多路音视频传输方法。
背景技术
现在,多路音视频传输方式主要是采用一条传输通道传输一路音视频流的方法,即传输通道与音视频流一一对应的音视频流传输方法。这种方法简单,且传输的音视频流实时性较高。但是目前很多业务场景并不需要高实时的音视频流,相对滞后一点点的音视频流是完全满足得了很多应用的。而且,如果采用一对一的音视频流传输方式,一条传输通道就只能进行一路音视频流的传输过程,音视频流传输效率相对较低,并且浪费了传输带宽。
所以,现有技术中多路音视频流传输采用传输通道与音视频流一一对应的传输方式,存在传输效率较低,浪费传输带宽的技术问题。
发明内容
本发明提供一种多路音视频传输方法和装置,用以解决现有技术中多路音视频流传输采用一对一的传输方式,传输效率较低、浪费传输带宽的技术问题,提高音视频流的传输速度,合理利用带宽。
第一方面,本发明实施例提供了一种多路音视频传输方法,该方法包括:
获取待发送的N路音视频流,将所述N路音视频流所对应的数据包通过M条传输通道发送到数据接收端,其中,所述N>M,所述M条传输通道中存在至少一条传输通道传输所述N路音视频流中的至少两路音视频流;
在所述至少两路音视频流中每一路音视频流的数据包头部添加权重参数和音视频流标识,其中,所述权重参数用来标示所述至少两路音视频流的接收处理顺序,所述音视频流标识用来区分所述数据包所属的音视频流。
一种实施方式,所述权重参数的数值越大,所述数据接收端对所述至少两路音视频流的接收处理顺序就越优先。
一种实施方式,将所述N路音视频流所对应的数据包通过M条传输通道发送到数据接收端包括:
基于预设的发送优先机制将所述N路音视频流通过M条传输通道发送到数据接收端;其中,所述发送优先机制用于确定发送所述至少两路音视频流的先后顺序。
一种实施方式,将所述N路音视频流所对应的数据包通过M条传输通道发送到数据接收端包括:
根据所述发送优先机制确定在每一个发送周期中,发送所述至少两路音视频流中每一路音视频流对应的数据包的个数;其中,所述每一个发送周期中发送所述至少两路音视频流中的每一路音视频流。
一种实施方式,所述M条传输通道中的每一条传输通道传输所述N路音视频流中的至少一路音视频流。
一种实施方式,所述M条传输通道中的每一条传输通道传输所述N路音视频流中的至少一路音视频流包括:
所述M条传输通道中的每一条传输通道都能传输所述N路音视频流中的一路音视频流,其中,所述每一条传输通道传输的所述一路音视频流各自不相同;
在所述M条传输通道中基于网络质量选取至少一条传输通道传输没有对应传输通道的N-M路音视频流。
第二方面,本发明实施例还提供了一种多路音视频传输装置,该装置包括:
数据获取模块,用于获取待发送的N路音视频流;
数据传输模块,用于将所述N路音视频流所对应的数据包通过M条传输通道发送到数据接收端,其中,所述N>M,所述M条传输通道中存在至少一条传输通道传输所述N路音视频流中的至少两路音视频流;
数据处理模块,用于在所述至少两路音视频流中每一路音视频流的数据包头部添加权重参数和音视频流标识,其中,所述权重参数用来标示所述至少两路音视频流的接收处理顺序,所述音视频流标识用来区分所述数据包所属的音视频流。
可选的,所述数据处理模块中,所述权重参数的数值越大,所述数据接收端对所述至少两路音视频流的接收处理顺序就越优先。
可选的,所述数据处理模块还用于基于预设的发送优先机制将所述N路音视频流通过M条传输通道发送到数据接收端;其中,所述发送优先机制用于确定发送所述至少两路音视频流的先后顺序。
可选的,所述数据处理模块还用于根据所述发送优先机制确定在每一个发送周期中,发送所述至少两路音视频流中每一路音视频流对应的数据包的个数;其中,所述每一个发送周期中发送所述至少两路音视频流中的每一路音视频流。
可选的,所述数据传输模块具体用于实现所述M条传输通道中的每一条传输通道传输所述N路音视频流中的至少一路音视频流。
可选的,所述数据传输模块还包括:
传输单元,用于在所述M条传输通道中的每一条传输通道都能传输所述N路音视频流中的一路音视频流,其中,所述每一条传输通道传输的所述一路音视频流各自不相同;
选择单元,用于在所述M条传输通道中基于网络质量选取至少一条传输通道传输没有对应传输通道的N-M路音视频流。
一种计算机装置,所述计算机装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如第一方面里任一种实施方式所提供的方法。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行如第一方面里任一种实施方式所提供的方法。
本发明有益效果如下:
本发明通过在多路音视频流中的每一路音视频流对应的数据包头部添加音视频流标识,用于区分数据包对应的音视频流,然后将多路音视频流对应的数据包通过同一条传输通道传输到数据接收端,实现了利用一条传输通道传输多路音视频流的效果,解决了现有技术中多路音视频流传输采用传输通道与音视频流一一对应的传输方式,传输效率较低,浪费传输带宽的技术问题,且通过给多路音视频流中的每一路音视频流对应的数据包添加权重参数,用于标识数据接收端对数据包的接收处理顺序,使得用户可以根据需求对多路音视频流对应的数据包进行优先接收处理。
附图说明
图1为本发明实施例一提供的一种多路音视频流传输方式的流程示意图;
图2为本发明实施例一中传输数据包的格式示意图;
图3a为本发明实施例二提供的一种多路音视频流传输方式的流程示意图;
图3b为本发明实施例二提供的一种多路音视频流传输方式的流程示意图;
图4为本发明实施例三提供的一种多路音视频流传输方式的流程示意图;
图5为本发明实施例三中传输数据包的格式示意图;
图6为本发明实施例四提供的一种多路音视频流传输装置的结构示意图;
图7为本发明实施例五提供的一种计算机装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例提供了一种多路音视频流传输方法,如图1所示,该方法包括:
步骤S101,获取待发送的N路音视频流;
获取待发送的N路音视频流可以是直接从用户摄像装置中获取的N路音视频流,也可以是接收到的N路音视频流,或者是调用预先存储好的N路音视频流,具体获取N路音视频流的方式不限。
步骤S102,将所述N路音视频流所对应的数据包通过M条传输通道发送到数据接收端,其中,所述N>M,因此M条传输通道中存在至少一条传输通道传输所述N路音视频流中的至少两路视频流,在至少一条传输通道传输所述至少两路音视频流包括:在所述至少两路音视频流中的每一路音视频流的数据包头部添加视频流标识。
具体的,所述视频流标识用来区分所述数据包所属的音视频流。对于音视频流标识所占bit位数量的设置可以根据传输的音视频流的数量来进行设定。例如,通过一条传输通道传输两路音视频流,可以设置1个bit位作为音视频流标识位,该1个bit位可以设置为二进制意义上的0或1,用于区别两路音视频流。但是如果需要传输更多路音视频流的时候,可以根据实际情况调整音视频流标识占据的bit位数,例如,传输三路或者四路音视频流的时候可以设置2个bit位作为音视频流标识位。
如图2所示,本发明实施例一中传输数据包的格式可以是:传输协议头、音视频流标识、音视频流。数据发送端对音视频流对应的数据包音视频流标识后加上传输协议头,然后通过建立的传输通道将此数据包发送到数据接收端,不同的音视频流通过不同的音视频流标识进行区分,实现了一条传输通道传输多路音视频流的技术效果。
实施例二
本发明实施例提供了一种多路音视频流传输方法,如图3a所示,该方法包括:
步骤S201,获取待发送的N路音视频流;
获取待发送的N路音视频流可以是直接从用户摄像装置中获取的N路音视频流,也可以是接收到的N路音视频流,或者是调用预先存储好的N路音视频流,具体获取N路音视频流的方式不限。
步骤S202,基于预设的发送优先机制将所述N路音视频流通过M条传输通道发送到数据接收端;其中,所述发送优先机制用于确定发送所述至少两路音视频流的先后顺序。
在步骤S202中,用户先设置发送优先机制用来确定发送所述至少两路音视频流的先后顺序,然后按照所述发送优先机制将所述N路音视频流通过M条传输通道发送到数据接收端,即如图3b所示,步骤S202可以拆分为以下步骤:
步骤S212,对所述N路音视频流所对应的数据包设置发送优先机制,其中,所述发送优先机制用于确定发送所述至少两路音视频流的先后顺序;
步骤S222,按照发送优先机制,将所述N路音视频流所对应的数据包通过M条传输通道发送到数据接收端,其中,所述N>M,因此M条传输通道中存在至少一条传输通道传输所述N路音视频流中的至少两路音视频流,在至少一条传输通道传输所述至少两路音视频流包括:在所述至少两路音视频流中的每一路音视频流的数据包头部添加音视频流标识。
在步骤S212中,一种具体的实施方式可以是根据所述发送优先机制确定在每一个发送周期中,发送所述至少两路音视频流中每一路音视频流对应的数据包的个数;其中,所述每一个发送周期中发送所述至少两路音视频流中的每一路音视频流。即该实施例中,发送音视频流的时候,可以根据发送优先机制确定发送各路音视频流的先后顺序外,还可确定发送每一路音视频流的数量,具体有以下实现方式:
第一种方式,根据发送优先机制确定发送多路音视频流的先后顺序和连续发送一路音视频流对应的数据包的数量。
例如,存在三路音视频流分别为A路、B路、C路音视频流,发送优先机制设置为A路音视频流最先发,然后B路音视频流,最后C路音视频流;对应的A路音视频流在一个发送周期中发送4个数据包,B路音视频流在一个发送周期中发送3个数据包,最后C路音视频流在一个发送周期中发送2个数据包;其中,在每一个发送周期中发送三路音视频流中的每一路音视频流,即在每一个发送周期中发送A路、B路、C路音视频流。
在具体发送的时候,则可以根据该发送优先机制优先发送A路音视频流,且连续发送4个A路音视频流对应的数据包后,发送3个B路音视频流对应的数据包,再发送2个C路音视频流对应的数据包。这样,A路音视频流不仅优先发送,而且连续发送的数据包最多,可以满足用户对于A路音视频流优先发送的需求。
第二种方式,在方式一的基础上,基于发送数据量的比例来确定连续发送一路音视频流对应的数据包的数量。
例如,存在三路音视频流分别为A路、B路、C路音视频流,发送优先机制设置为A路音视频流最先发,然后B路音视频流,最后C路音视频流;对应的A路音视频流在一个发送周期中发送数据量的比例为50%,B路音视频流在一个发送周期中发送数据量的比例为30%,C路音视频流在一个发送周期中发送数据量的比例为20%;其中,在每一个发送周期中发送三路音视频流中的每一路音视频流,即在每一个发送周期中发送A路、B路、C路音视频流。
在具体发送的时候,则可以根据该发送优先机制优先发送A路音视频流,同时根据设置的发送数据量的比例确定在一个发送周期中,发送A路音视频流对应的数据包为5个,发送B路音视频流对应的数据包为3个,发送C路音视频流对应的数据包为2个,那么,A路音视频流不仅优先发送,而且连续发送的数据包最多,可以满足用户对于A路音视频流优先发送的需求。
值得说明的是,用户可以根据需求自行设定发送优先机制,只要该发送优先机制能确定多路视频流中的一路视频流优先发送,且该路视频流连续发送的数据包最多即可,不仅限于以上所述的两种实现方式,。
进一步,所述优先机制中,如果连续发送某一路音视频流对应的多个数据包,为了保证实时性,优选为连续发送两个所述某一路音视频流对应的数据包。例如,需要通过一条传输通道传输两路音视频流时,通过设置发送优先机制可以优先发送第一路音视频流,且连续发送两个第一路音视频流对应的数据包后再发送一个第二路音视频流对应的数据包。
本发明实施例二在实施例一的基础上,根据不同的应用场景,用户可以依据实时性或者其他个性需要对所述N路音视频流所对应的数据包设置发送优先机制,而此时接收端按正常接收处理音视频流即可。
实施例三
本发明实施例提供了一种多路音视频流传输方法,如图4所示,该方法包括:
步骤S301,获取待发送的N路音视频流;
获取待发送的N路音视频流可以是直接从用户摄像装置中获取的N路音视频流,也可以是接收到的N路音视频流,或者是调用预先存储好的N路音视频流,具体获取N路音视频流的方式不限。
步骤S303,将所述N路音视频流所对应的数据包通过M条传输通道发送到数据接收端,其中,所述N>M,因此M条传输通道中存在至少一条传输通道传输所述N路音视频流中的至少两路音视频流,在至少一条传输通道传输所述至少两路音视频流包括:在所述至少两路音视频流中的每一路音视频流的数据包头部添加权重参数和音视频流标识。
具体的,所述权重参数用来标示所述至少两路音视频流的接收处理顺序。对于权重参数的数值设置和所占bit位数可由用户根据使用环境的需求进行设定;例如:可以设置权重参数越大,对应的接收处理顺序就越优先,即数据接收端接收到所述至少两路音视频流后,根据权重参数确定处理所述至少两路音视频流的先后顺序。例如,通过一条传输通道传输一路高清视频流和一路普清视频流时,可以将高清视频对应的数据包和普清视频对应的数据包的权重参数位都设置为2个bit位,因为1个bit位可以设置为二进制意义上的0和1,所以可以将高清视频对应的数据包中2个bit位的权重参数的数值设置为二进制意义上的11(即十进制意义上的3),将普清视频对应的数据包中2个bit位的权重参数的数值设置为二进制意义上的01(即十进制意义上的1)。此时,高清视频对应的数据包中的权重参数的数值比普清视频对应的数据包中的权重参数更大,所以数据接收端对高清视频流的接收处理就比普清视频流更优先。
在实施例三的基础上,为了实现根据不同的应用场景,满足用户可以依据实时性或者其他个性的需要,还可以在步骤301之后,步骤303之前增加步骤S302,对所述N路音视频流所对应的数据包设置发送优先机制:
步骤S302,对所述N路音视频流所对应的数据包设置发送优先机制,其中,所述发送优先机制用于确定发送所述至少两路音视频流的先后顺序。
增加步骤S302后,步骤S303中会按照所述发送优先机制,将所述N路音视频流所对应的数据包通过M条传输通道发送到数据接收端。
如图5所示,本发明实施例三中传输数据包的格式可以是:传输协议头、音视频流标识、权重参数、音视频流。数据发送端对音视频流对应的数据包添加权重参数和音视频流标识后加上传输协议头,然后通过建立的传输通道将此数据包发送到数据接收端,不同的音视频流通过不同的音视频流标识进行区分。例如,通过UDP(User Datagram Protocol、用户数据报协议)传输RTP(Real-time Transport Protocol、实时传输协议)视频流,对RTP视频流对应的数据包添加权重参数和视频流标识后添加UDP头,最后其传输包格式为:UDP头、StreamID、权重参数、RTP视频流,其中视频流标识StreamID用于区分数据包所属的视频流,权重参数用于标识数据接收端对RTP视频流的接收处理顺序。
数据接收端依次接收到音视频流对应的数据包,先去除传输协议头部,获取音视频流标识和权重参数,根据音视频流标识将数据包划分为一路音视频流,达到还原多路音视频流的目的。例如,数据接收端接收到四个数据包,获取到第一个数据包的音视频流标识为0,第二个数据包的音视频流标识为1,第三个数据包的音视频流标识为0,第四个数据包的音视频流标识为1。然后数据接收端将音视频流标识为0的第一个数据包和第三个数据包划分为第一路音视频流,将音视频流标识为1的第二个数据包和第四个数据包划分为第二路音视频流。如果数据接收端再接收到音视频流标识为0的数据包,则将所述数据包划分为第一路音视频流;如果数据接收端再接收到音视频流标识为1的数据包,则将所述数据包划分为第二路音视频流。
数据接收端根据音视频流标识将数据包划分为一路音视频流后,根据权重参数对各路音视频流进行相应的处理。所述相应的处理指的是用户可以根据自己实际情况和需要决定如何使用音视频流。例如,用户可以根据权重参数对某一路音视频流优先进行播放,或者录制,或者储存。
值得说明的是,在数据包中设置权重参数和音视频流标识时,权重参数位和音视频流标识位的前后位置不做限定,用户可以将权重参数位设置在音视频流标识位前面,也可以将权重参数位设置在音视频流位后面,只需保证所述权重参数能标示所述至少两路音视频流的接收处理顺序,所述音视频流标识能区分所述数据包所属的音视频流即可。
本发明实施例提供的方法中,将N路音视频流所对应的数据包通过M条传输通道发送到数据接收端,为了避免传输通道出现空置的情况,所述M条传输通道中的每一条传输通道传输所述N路音视频流中的至少一路音视频流,保证所述M条传输通道中的每一条传输通道都不出现传输通道空置的情况。
进一步,所述M条传输通道中的每一条传输通道都能传输所述N路音视频流中的一路音视频流,其中,所述每一条传输通道传输的所述一路音视频流各自不相同。例如,通过两条传输通道传输三路音视频流,首先通过两条传输通道分别传输三路音视频流中不同的两路音视频流,保证两条传输通道不出现空置的情况。
更进一步,在所述M条传输通道中基于网络质量选取至少一条传输通道传输没有对应传输通道的N-M路音视频流。基于网络质量进行选取时,可以对传输通道进行收发统计,并将传输通道的丢包率、时延等因素作为判断网络质量是否可以传输至少两条音视频流的依据。例如,通过RTCP(RTP Control Protocol、RTP控制协议)数据包获取传输通道的网络状况、分组丢失概率等信息,从而对传输通道的网络状况进行诊断,确定出至少一条传输通道。
本发明实施例提供的方法中,通过给多路音视频流对应的数据包添加权重参数和音视频流标识,实现一条传输通道传输多路音视频流,提高了传输效率,节约了传输带宽。并且用户可以自定义设定相应的权重参数和音视频流标识,以达到各路音视频流可拥有相应的接收处理顺序。同时,本发明只修改了传输数据包的格式,用户无需做大的代码结构修改,可以方便地优化现有的音视频传输方法。
例如,视频会议中的多屏显示,如视频会议需要显示四路视频,一路高清其他三路普清,如果都是单独传输的话则需要建立四路传输通道,但是应用本发明实施例,只需要建立一条传输通道即可满足需求。对于高清的那路视频可以优先发送,且可采用的是连续发两个高清视频对应的数据包后再发一个其他三路普清视频对应的数据包(三路普清视频可以通过混合算法合成一路视频流),处理的时候也根据权重参数优先处理高清视频。由于此时用户关注度主要在高清视频上,所以普清视频的实时性降低了一点点没太大影响,也保证了高清的实时性,且带宽只使用了一路传输通道的带宽,而非四路,极大节约了带宽。
实施例四
本发明提供了一种多路音视频传输装置,如图6所示,该装置包括:
数据获取模块410,用于获取待发送的N路音视频流;
数据传输模块420,用于将所述N路音视频流所对应的数据包通过M条传输通道发送到数据接收端,其中,所述N>M,所述M条传输通道中存在至少一条传输通道传输所述N路音视频流中的至少两路音视频流;
数据处理模块430,在所述至少两路音视频流中每一路音视频流的数据包头部添加权重参数和音视频流标识,其中,所述权重参数用来标示所述至少两路音视频流的接收处理顺序,所述音视频流标识用来区分所述数据包所属的音视频流。
具体的,数据获取模块410和数据处理模块430可以集成在数据发送端中,数据传输模块420可以集成在用户建立好的传输通道中。
可选的,数据处理模块430用于在音视频流对应的数据包头部添加权重参数和音视频流标识,其中,所述权重参数越大,数据接收端对音视频流的接收处理顺序越优先。
可选的,数据处理模块430还用于基于预设的发送优先机制将所述N路音视频流通过M条传输通道发送到数据接收端;其中,所述发送优先机制用于确定发送所述至少两路音视频流的先后顺序。
可选的,数据处理模块430还用于根据所述发送优先机制确定在每一个发送周期中,发送所述至少两路音视频流中每一路音视频流对应的数据包的个数;其中,所述每一个发送周期中发送所述至少两路音视频流中的每一路音视频流。
可选的,数据传输模块420具体用于实现所述M条传输通道中的每一条传输通道传输所述N路音视频流中的至少一路音视频流。
进一步,数据传输模块420还包括传输单元421和选择单元422,其中,传输单元421保证所述M条传输通道中的每一条传输通道都能传输所述N路音视频流中的一路音视频流,其中,所述每一条传输通道传输的所述一路音视频流各自不相同;选择单元421在所述M条传输通道中基于网络质量选取至少一条传输通道传输没有对应传输通道的N-M路音视频流。
实施例五
本发明实施例中还提供一种计算机装置,如图7所示,该计算机装置包括处理器501和存储器502,其中,处理器501用于执行存储器502中存储的计算机程序时实现本发明实施例一中提供的多路音视频传输方法的步骤。
可选的,处理器501具体可以是中央处理器、特定应用集成电路(ApplicationSpecific Integrated Circuit,ASIC),可以是一个或多个用于控制程序执行的集成电路,可以是使用现场可编程门阵列(Field Programmable Gate Array,FPGA)开发的硬件电路,可以是基带处理器。
可选的,处理器501可以包括至少一个处理核。
可选的,电子设备还包括存储器502,存储器502可以包括只读存储器(Read OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)和磁盘存储器。存储器502用于存储处理器501运行时所需的数据。存储器502的数量为一个或多个。
实施例六
本发明实施例中还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行本发明实施例一中提供的多路音视频传输方法的步骤。
本发明实施例提出一种多路音视频传输方法和装置,适用于各种网络传输音视频流的场景,适用于linux、Windows等主流系统音视频传输开发。本发明实施例可利用单条传输通道进行多路音视频流的传输,也可以通过M条通道传输N路音视频流(N>M),提高了带宽利用率和传输效率。同时本发明实施例提出在传输过程中增加权重参数的思想,用户可根据需要对多路音视频流设计相应的接受处理顺序。本发明实施例在保证用户体验的同时,节约了用户的带宽,对于一些带宽不高而又想拥有多路音视频流处理的场景有极大的应用价值。
值得说明的是,本发明方法思想并不仅仅局限于音视频流的传输,对于其他格式的数据包的传输也同样适用,比如多路音频传输、多路视频传输、多路文本数据传输、混合多路数据流传输等。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。