基于数据收发缓存的视频直播时的音频传输方法及系统
技术领域
本发明属于视频直播技术领域,涉及一种基于数据收发缓存的视频直播时的音频传输方法及系统。
背景技术
在视频直播时,通常采用视频拍摄设备同时对视频和音频信息进行采集,但是在拍摄距离较远、噪声干扰较大或发声点较多的情况下,采用上述方式采集的声音信号音质较差且容易失真,影响直播效果。如果将麦克风等音频采集设备单独设置在临近发声点的位置以更好的采集声音,则又涉及到将音频信息传输到视频拍摄设备;现有技术中一般采用有线传输或蓝牙传输的方式传输音频信息,但是有线传输的方式要求声音和视频采集位置相对固定,不便于调整;蓝牙传输方式的传输速率较低,需要对音频进行压缩后再传输,从而会降低音质;另外,蓝牙传输的距离一般在10米左右,且不能进行网络延展,传输距离受限。WIFI传输方式虽然在传输速率上远超蓝牙,且可以通过网络延展大大增加传输距离,但由于WIFI传输协议的延时较长,且不可避免地存在丢包现象,用于传输音频还存在许多需要解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种基于数据收发缓存的视频直播时的音频传输方法及系统。
为达到上述目的,本发明提供如下技术方案:
一种基于数据收发缓存的视频直播时的音频传输方法,包括以下步骤:
S101、将音频采集设备通过无线通信网络与视频拍摄设备连接,并对音频采集设备和视频拍摄设备的时间进行同步;
S102、在音频采集设备端建立发送缓冲区,在视频拍摄设备拍摄视频的同时,音频采集设备进行音频采样,并将得到的采样信息打包为数据包后存储至发送缓冲区;
S103、当发送缓冲区存储了新的数据包时,将发送缓冲区的全部数据包通过无线通信网络发送给视频拍摄设备;
S104、在视频拍摄设备端建立接收缓冲区,通过接收缓冲区存储接收到的来自音频采集设备的数据包;当接收缓冲区存储的数据包的数量达到预定的数量后,按照先进先出原则依次将接收缓冲区存储的数据包移出接收缓冲区;
S105、将移出接收缓冲区的数据包恢复为音频信息并与视频拍摄设备在对应时间拍摄的视频信息进行合成后生成直播视频。
进一步的,在所述S101步骤中,设置有多个音频采集设备,多个所述音频采集设备均与视频拍摄设备的时间进行同步;
在所述S102步骤中,每一所述音频采集设备分别设置有一个发送缓冲区;
在所述S104步骤中,在视频拍摄设备端对应每一发送缓冲区分别设置有一个接收缓冲区,每一接收缓冲区分别用于存储来自对应的发送缓冲区的数据包;
在所述S105步骤中,先将移出各个接收缓冲区的数据包进行多轨合成后再与视频信息进行合成,生成直播视频。
进一步的,在所述发送缓冲区形成有第一存储队列,所述发送缓冲区通过第一存储队列对数据包进行存储;
在所述S102步骤中,所述音频采集设备生成数据包后存储到第一存储队列的方法包括以下子步骤:
S1021、将第一存储队列中各存储位置的数据包依次后移;
S1022、丢弃第一存储队列中最后一个存储位置存储的数据包;
S1023、将音频采集设备新生成的数据包存储在第一存储队列的第一个存储位置。
进一步的,在所述接收缓冲区形成有第二存储队列,所述接收缓冲区通过第二存储队列对数据包进行存储;在所述S104步骤中,按照数据包在第一存储队列的排列顺序将接收到的数据包存储至第二存储队列中;当数据包有缺失时,则在第二存储队列中预留出缺失的数据包对应的存储位置。
进一步的,在所述S104步骤中,视频拍摄设备在接收到来自音频采集设备的数据包后,执行以下步骤:
S1041、检测第二存储队列存储的数据包是否有缺失,如果有则缺失则执行S1042步骤,无缺失则执行S1043步骤;
S1042、从接收的数据包中找出第二存储队列缺失的数据包,并存储至第二存储队列中对应的位置;执行S1043步骤;
S1043、将第二存储队列中最后一个存储位置存储的数据包移出接收缓冲区,并将第二存储队列中各存储位置的数据包依次后移一个存储位置;
S1044、检测接收的数据包中是否有音频采集设备新生成的数据包,如果有则将该数据包存储在第二存储队列的第一个存储位置,如果没有则空出第一个存储位置,并在该存储位置标记数据包缺失。
进一步的,所述第二存储队列存储的数据包的数量等于第一存储队列存储的数据包的数量。
进一步的,所述无线通信网络为WIFI通信网络,所述WIFI通信网络包括WIFI路由器,所述音频采集设备和视频拍摄设备均设置有WIFI模块,所述音频采集设备和视频拍摄设备分别通过其WIFI模块与WIFI路由器连接。
进一步的,所述无线通信网络为4G或5G移动通信网络,所述移动通信网络包括移动通信基站,所述音频采集设备和视频拍摄设备均设置有4G通信模块或5G通信模块,所述音频采集设备和视频拍摄设备分别通过其4G通信模块或5G通信模块与移动通信基站连接。
一种基于数据收发缓存的视频直播时的音频传输系统,包括音频采集设备和视频拍摄设备,所述音频采集设备包括:
音频采集模块,用于通过音频采样采集音频信息,并将采集的音频信息打包为数据包;
第一时间同步模块,用于在收到视频拍摄设备的对时指令后,立即返回对时信息给视频拍摄设备;
发送缓冲区,用于存储音频采集模块生成的数据包,并在存储的数据包的数量达到预定的数量后,按照先进先出的原则丢弃最先存储的数据包;以及
第一无线通信模块,用于将发送缓冲区存储的数据包发送至无线通信网络;
所述视频拍摄设备包括:
视频拍摄模块,用于通过视频拍摄获取视频信息;
第二时间同步模块,用于发送对时指令给音频采集设备,并获取发送对时指令时其自身的时间戳;以及在收到音频采集设备返回的对时信息后,立即再次获取其自身的时间戳;并计算两个时间戳差值的一半作为视频拍摄设备的指令传送到音频采集设备的时延;
第二无线通信模块,用于接入无线通信网络并获取音频信息的数据包;
接收缓冲区,用于存储接收到的来自音频采集设备的数据包中未被存储的数据包,并在存储的数据包的数量达到预定的数量后,按照先进先出原则依次将存储的数据包移出接收缓冲区;
视频缓冲区,用于对视频拍摄模块拍摄的视频信息进行缓存;以及
音视频合成模块,用于将移出接收缓冲区的数据包恢复为音频信息并与移出视频缓冲区的视频信息进行合成后生成直播视频。
进一步的,所述无线通信网络为WIFI通信网络,所述WIFI通信网络包括WIFI路由器,所述第一无线通信模块和第二无线通信模块均为WIFI模块,所述第一无线通信模块和第二无线通信模块均与WIFI路由器连接;或
所述无线通信网络为4G或5G移动通信网络,所述移动通信网络包括移动通信基站,所述第一无线通信模块和第二无线通信模块均为4G通信模块或5G通信模块,所述第一无线通信模块和第二无线通信模块均与移动通信基站连接。
本发明中,音频采集设备通过无线通信网络向视频拍摄设备传输音频信息,音频信息传输便捷,支持多通道音频信息同时传输,且可以进行无损音频的传输,确保音质效果;通过在音频采集设备设置发送缓冲区,能够对同一音频数据包进行多次发送,只需要有一次被接收即可,从而克服无线通信网络的丢包现象的影响;在视频拍摄设备设置接收缓存区,能够留出对丢包缺失的音频数据进行再次接收和补全的时间,能够显著提高直播时的音质,且不会造成明显的延时,能够满足视频直播的实时性要求。
附图说明
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作优选的详细描述,其中:
图1为本发明基于数据收发缓存的视频直播时的音频传输方法的一个优选实施例的流程图。
图2为音频采集设备生成数据包后存储到第一存储队列的流程图。
图3为音频采集设备生成数据包后存储到第一存储队列的示意图。
图4为在第二存储队列预留出缺失的数据包对应的存储位置的示意图。
图5为视频拍摄设备将接收到的数据包存储到第二存储队列的流程图。
图6为视频拍摄设备将接收到的数据包存储到第二存储队列的示意图。
图7为本发明基于数据收发缓存的视频直播时的音频传输系统的一个优选实施例的结构示意图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
如图1所示,本发明基于数据收发缓存的视频直播时的音频传输方法的一个优选实施例包括以下步骤:
S101、将音频采集设备通过无线通信网络与视频拍摄设备连接,并对音频采集设备和视频拍摄设备的时间进行同步。其中,所述音频采集设备可以是普通的录音设备,也可以是具有环绕声效果的环绕声录音设备,用于吉它、贝斯等乐器录音的高阻抗乐器录音设备,或者电容式麦克风等主动提供幻象供电的录音设备。当需要对多个位置同时进行音频采集时,还可以设置有多个音频采集设备,多个所述音频采集设备均与视频拍摄设备的时间进行同步。例如,当多个乐器同时演奏时,可以在每一乐器的发声点附近单独进行音频采集,通过近距离的采集可以获得该乐器更好的音质效果,之后再对采集的音频进行合成,以达到更好的录音效果。
所述无线通信网络优选为WIFI通信网络,所述WIFI通信网络包括WIFI路由器,所述音频采集设备和视频拍摄设备均优选为设置有WIFI模块,所述音频采集设备和视频拍摄设备分别通过其WIFI模块与WIFI路由器连接。当然,所述无线通信网络也可以为4G或5G移动通信网络,所述移动通信网络包括移动通信基站,所述音频采集设备和视频拍摄设备均设置有4G通信模块或5G通信模块,所述音频采集设备和视频拍摄设备分别通过其4G通信模块或5G通信模块与移动通信基站连接。采用无线通信网络传输音频信息,不仅音频信息传输便捷,支持多通道音频信息同时传输,而且能够进行无损音频的传输,确保音质效果。当然,能够进行无损音频传输的传输方式也必然适用于有损音频(压缩格式的音频)的传输。
对音频采集设备和视频拍摄设备的时间进行同步的方法具体为:
视频拍摄设备发送对时指令给音频采集设备,并获取发送对时指令时其自身的时间戳;音频采集设备收到对时指令后,立即返回对时信息给视频拍摄设备;视频拍摄设备收到音频采集设备返回的对时信息后,立即再次获取其自身的时间戳;并计算出视频拍摄设备的指令传送到音频采集设备的时延,计算公式如下:
diff1=(P2-P1)/2;
其中,diff1表示视频拍摄设备的指令传送到音频采集设备的时延;P1表示视频拍摄设备发送对时指令给音频采集设备时获取的时间戳;P2表示视频拍摄设备收到音频采集设备返回的信息时获取的时间戳。
本实施例中,音频采集设备的音频采样速率一般为每秒种采样48000次,当然,音频采样速率也可以是其他数值;数据包的大小可以为64bit~2048bit,一般选择为128bit或256bit。
S102、在音频采集设备端建立发送缓冲区,在视频拍摄设备拍摄视频的同时,音频采集设备进行音频采样,并将得到的采样信息打包为数据包后存储至发送缓冲区。优选为在所述发送缓冲区形成第一存储队列,发送缓冲区通过第一存储队列对数据包进行存储。如图2所示,本步骤中,所述音频采集设备生成数据包后存储到第一存储队列的方法包括以下子步骤:
S1021、将第一存储队列中各存储位置的数据包依次后移。如图3所示,假设之前的第一存储队列中只在第一个存储位置存储了音频采集设备生成的第1个数据包(即数据包1),则在音频采集设备生成的第2个数据包(即数据包2)后,将数据包1从第一存储队列的第一个存储位置后移至第二个存储位置,并在第一存储队列的第一个存储位置存储数据包2。
S1022、丢弃第一存储队列中最后一个存储位置存储的数据包。当第一存储队列存储的数据包的数量达到了第一存储队列的最大存储数量(即第一存储队列的最后一个存储位置存储有数据包时),在将第一存储队列中存储的数据包后移时会丢弃其最后一个存储位置存储的数据包,以便空出第一个存储位置用于存储音频采集设备新生成的数据包。例如,假设第一存储队列可以存储5个数据包,图3的a图为第一存储队列将数据包后移前的示意图,则第一存储队列在数据包后移之后的示意图如图3的b图所示。其最后一个存储位置存储的数据包1被丢弃,并空出第一个存储位置用于存储音频采集设备生成的第6个数据包(即数据包6)。
S1023、如图3的c图所示,将音频采集设备新生成的数据包存储在第一存储队列的第一个存储位置。从而对第一存储队列存储的数据包进行更新,使第一存储队列不断丢弃早期存储的数据包,对新生成的数据包进行缓存。
S103、当发送缓冲区存储了新的数据包时,将发送缓冲区的全部数据包通过无线通信网络发送给视频拍摄设备。如图3的c图所示,当发送缓冲区存储了数据包6后,会将数据包2至数据包6都发送至无线通信网络,此时,数据包2已经是第5次发送了,只要其中一次被视频拍摄设备接收到,数据包2就不会丢失。当然,还可通过增加发送缓存区存储的数据包的个数以增加数据包的发送次数,例如,当发送缓存区可存储10个数据包时,每个数据包都将被发送10次。由于无论是WIFI通信网络还是4G或5G移动通信网络,均不可避免的会存在丢包的现象,为了减小丢包现象对音质的影响,本实施例通过在音频采集设备建立第一存储队列对新生成的数据包进行缓存,可以将新生成的数据包保留一段时间,从而对同一数据包可多次进行发送,视频拍摄设备只需要接收到其中一次发送的数据包即可避免丢包,从而克服丢包率对音质的影响。
S104、在视频拍摄设备端建立接收缓冲区,通过接收缓冲区存储接收到的来自音频采集设备的数据包;当接收缓冲区存储的数据包的数量达到预定的数量后,按照先进先出原则依次将接收缓冲区存储的数据包移出接收缓冲区。优选为在所述接收缓冲区形成第二存储队列,所述接收缓冲区通过第二存储队列对数据包进行存储;所述第二存储队列存储的数据包的数量大于或等于第一存储队列存储的数据包的数量,优选为所述第一存储队列和第二存储队列存储的数据包的数量相等。在本步骤中,可按照数据包在第一存储队列的排列顺序将接收到的数据包存储至第二存储队列中;当数据包有缺失时,则在第二存储队列中预留出缺失的数据包对应的存储位置。假设第一存储队列和第二存储队列均有五个数据包存储位置;如图4的a图所示,假设第一存储队列存储的为数据包6至数据包10;则视频拍摄设备在接收到来自音频采集设备的数据包6至数据包10之后,第二存储队列存储的数据包也为数据包6至数据包10。如图4的b图所示,假设由于丢包未能接收到数据包10,导致数据包10缺失,则会空出数据包10对应的存储位置。
如图5所示,本步骤中,视频拍摄设备在接收到来自音频采集设备的数据包后,执行以下步骤:
S1041、检测第二存储队列存储的数据包是否有缺失,如果有则缺失则在接收数据存储队列中预留出缺失的数据包对应的存储位置,并执行S1042步骤,无缺失则执行S1043步骤。如图6的a图所示,假设第一存储队列存储的为数据包16至数据包20;则视频拍摄设备在接收到来自音频采集设备的数据包16至数据包20之前,第二存储队列存储的数据包应为数据包15至数据包19。如图6的b图所示,假设上一次接收时由于丢包未能接收到数据包19,导致数据包19缺失,则会预留出数据包19对应的存储位置。第二存储队列中各存储位置的数据包每间隔预定的时间依次后移一个存储位置;间隔的时间与数据包的大小相适配,例如,数据包为128bit时,则以音频采集设备进行128次采样所需的时间作为间隔的时间。如果在数据包后移时仍未接收到数据包19,则数据包19预留的存储位置也会向后移。
S1042、从接收的数据包中找出第二存储队列缺失的数据包,并存储至第二存储队列中对应的位置;执行S1043步骤。例如,如图6的c图所示,当第二存储队列中数据包19缺失时,在下一次接收时接收到数据包19后,则会将数据包19存储到预留的位置中。
S1043、将第二存储队列中最后一个存储位置存储的数据包移出接收缓冲区,并将第二存储队列中各存储位置的数据包依次后移一个存储位置。当第一存储队列存储的为数据包16至数据包20时;则视频拍摄设备在接收到来自音频采集设备的数据包16至数据包20之后,如图6的d图所示,视频拍摄设备将第二存储队列中的存储的数据包依次后移,将数据包15移出接收缓冲区。
S1044、检测接收的数据包中是否有音频采集设备新生成的数据包(即在第二存储位置存储的数据包之后生成的数据包),如果有则将该数据包存储在第二存储队列的第一个存储位置,如果没有则预留出第一个存储位置,并在该存储位置标记数据包缺失。如图6的e图所示,当视频拍摄设备接收到数据包20后,将数据包20存储在第二存储队列的第一个存储位置,从而使第一存储队列和第二存储队列存储的数据包完全一致。
由于有接收缓冲区对接收的数据进行缓冲,当检测到有丢包时,可在之后接收的数据包中找出缺失的数据包,从而对缺失的数据包进行补全,避免数据包丢失对音质造成的影响。当有多个音频采集设备时,还可在视频拍摄设备端对应每一音频采集设备分别设置一个接收缓冲区,接收的每一音频采集设备数据包分别存储在对应的接收缓冲区中;从而实现音频的分轨存放。
S105、将移出接收缓冲区的数据包恢复为音频信息并与视频拍摄设备在对应时间拍摄的视频信息进行合成后生成直播视频。在合成之前需要先将视频信息和音频信息的时间轴对齐,优选为在所述视频拍摄设备设置视频缓冲区,所述视频拍摄设备拍摄的视频信息在视频缓冲区延迟后再移出视频缓冲区,所述视频缓冲区的延迟时长diff3等于视频拍摄设备的指令传送到音频采集设备的时延diff1与接收缓冲区所造成的时延diff2之和,从而使视频信息在移出视频缓冲区后与音频信息的时间轴对齐。由于视频信息在拍摄后本来就会经过一个视频缓冲区进行缓存,因此,只需要对视频缓冲区的延迟时长进行设置,即可使音频信息和视频信息的时间同步。采用上述对时方法,由于只需要知道时延diff1和时延diff2即可,音频采集设备不需要设置时钟,可以降低音频采集设备的成本。当有多个音频采集设备,并设置有多个接收缓冲区时,先将移出各个接收缓冲区的数据包进行多轨合成后再与视频信息进行合成,生成直播视频。
本实施例中,发送缓存区虽然会对数据包进行缓存,但数据包进入发送缓存区后即可发送至无线通信网络,并不会等到数据包被移出发送缓存区才发送,因此发送缓存区并不会直接造成直播音频的延时,但是对应发送缓存区设置的接收缓存区由于会对音频采集设备送来的数据包进行缓存后再与视频合成,所以导致直播的数据会有一定的延时,但是由于音频采样的速率非常快,例如,本实施例中音频采样速率为每秒种采样48000次,因此实际的延时会非常短,几乎可以忽略。假设数据包的大小为128bit,接收缓冲区中存储的数据包的容量为10个数据包,则从所述视频拍摄设备接收到数据包放入接收缓存区,到该数据包被移出接收缓存区之间的时间远小于1秒钟,并不会对直播的实时性造成影响。
本发明还公开了一种基于数据收发缓存的视频直播时的音频传输系统,如图7所示,本发明基于数据收发缓存的视频直播时的音频传输系统的一个优选实施例包括音频采集设备和视频拍摄设备。所述音频采集设备可以只有一个,也可以有多个。
所述音频采集设备包括音频采集模块、第一时间同步模块、发送缓冲区和第一无线通信模块。所述音频采集模块用于通过音频采样采集音频信息通过音频采样采集音频信息,并将采集的音频信息打包为数据包。所述音频采集模块可以是普通的录音设备,也可以是具有环绕声效果的环绕声录音设备、用于吉它、贝斯等乐器录音的高阻抗乐器录音设备或电容式麦克风等主动提供幻象供电的录音设备。
所述第一时间同步模块用于在收到视频拍摄设备的对时指令后,立即返回对时信息给视频拍摄设备。所述发送缓冲区用于存储音频采集模块生成的数据包,并在存储的数据包的数量达到预定的数量后,按照先进先出的原则丢弃最先存储的数据包。可在发送缓冲区形成第一存储队列,按照数据包的生成顺序依次将生成的数据包存储至第一存储队列中。
所述第一无线通信模块用于将采集的音频信息打包为数据包后通过无线通信网络发送。所述无线通信网络优选为WIFI通信网络,所述WIFI通信网络包括WIFI路由器,所述第一无线通信模块为WIFI模块,所述第一无线通信模块与WIFI路由器连接。当然,所述无线通信网络也可以为4G或5G移动通信网络,所述移动通信网络包括移动通信基站,所述第一无线通信模块为4G通信模块或5G通信模块,所述第一无线通信模块与移动通信基站连接。
所述视频拍摄设备包括视频拍摄模块、第二时间同步模块、第二无线通信模块、接收缓冲区、视频缓冲区和音视频合成模块。所述视频拍摄模块用于通过视频拍摄获取视频信息;所述第二无线通信模块用于接入无线通信网络并获取音频信息的数据包;所述无线通信网络为WIFI通信网络时,所述第二无线通信模块为WIFI模块,所述第二无线通信模块与WIFI路由器连接。所述无线通信网络为4G或5G移动通信网络时,所述第二无线通信模块为4G通信模块或5G通信模块,所述第二无线通信模块与移动通信基站连接。
所述第二时间同步模块用于发送对时指令给音频采集设备,并获取发送对时指令时其自身的时间戳;以及在收到音频采集设备返回的对时信息后,立即再次获取其自身的时间戳;并计算两个时间戳差值的一半作为视频拍摄设备的指令传送到音频采集设备的时延。所述接收缓冲区用于存储接收到的来自音频采集设备的数据包中未被存储的数据包(即音频采集模块最新生成的数据包和因丢包导致视频拍摄设备未接收到而缺失的数据包),并在存储的数据包的数量达到预定的数量后,按照先进先出原则依次将存储的数据包移出接收缓冲区。可在接收缓冲区形成第二存储队列,按照数据包在第一存储队列的存储顺序依次将接收到的数据包存储至第二存储队列中。当检测到有丢包现象时,在第二存储队列中为丢包缺失的数据包预留出该数据包对应的存储位置,以便于数据包的时间同步;在之后接收到缺失的数据包后,再将该数据包填入存储队列中预留的存储位置中。
所述视频缓冲区用于对视频拍摄模块拍摄的视频信息进行缓存。所述音视频合成模块用于将移出接收缓冲区的数据包恢复为音频信息并与移出视频缓冲区的视频信息进行合成后生成直播视频。
本实施例中,音频采集设备通过无线通信网络向视频拍摄设备传输音频信息,音频信息传输便捷,且可以进行无损音频的传输,确保音质效果;通过在音频采集设备设置发送缓冲区,能够对同一音频数据包进行多次发送,只需要有一次被接收即可,从而克服无线通信网络的丢包现象的影响;在视频拍摄设备设置接收缓存区,能够及时发现丢包缺失的音频数据,并且留出对丢包缺失的音频数据进行再次接收和补全的时间,避免无线通信网络的丢包现象对音质的影响,能够显著提高直播时的音质;且接收缓存区不会造成明显的延时,对视频直播的实时性的影响可以忽略不计。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。