发明内容
针对上述现有技术存在的问题,本发明提供了一种音视频同步控制方法,包括:
基于采集的音视频数据编码后分别发送到第一缓冲区和第二缓冲区;
当第一缓冲区的音频数据达到发送阈值时,将第一缓冲区的音频数据发送到第三缓冲区,同时基于第三缓冲区内音频数据的时间戳信息,将第二缓冲区内具有相同时间戳信息的视频数据发送到第三缓冲区;
基于第三换缓冲器的音视频数据通过网络传输到第四缓冲区;
基于第四缓冲器的音视频混合数据分离后分别进行解码,并基于时间戳信息同步播放音视频数据。
作为上述方案的进一步优化,所述基于时间戳信息同步播放音视频数据,包括:
基于音频流当前音频时间戳t1,判断视频流当前视频时间戳t2是否小于t1-Δ,若是,则舍弃播放当前视频帧;
判断|t2-t1|≤Δ,若是,则直接播放当前视频帧和音频数据;
判断t2是否大于t1+Δ,若是,则重复播放当前视频帧。
作为上述方案的进一步优化,所述方法还包括基于第四缓冲区的数据传输参数控制第三缓冲区的数据发送速度和控制采集的音视频数据编码发送到第一缓冲区和第二缓冲区的速度。
作为上述方案的进一步优化,所述基于第四缓冲区的数据传输参数控制第三缓冲区的数据发送速度,包括:
获取第四缓冲区接收数据的延时时序数据和丢包率;
基于第四缓冲区接收数据的延时时序数据,预测下一时刻的延时数据;
基于下一时刻的延时预测数据判断所属第一阈值分段,基于第四缓冲区的丢包率,判断所属第二阈值分段;
基于所述第一阈值分段和第二阈值分段匹配对应的数据发送速度的控制参数;
基于所述控制参数确定第三缓冲区的第一数据发送速度和第二数据发送速度;
基于第一数据发送速度和第二数据发送速度加权融合后获取第三缓冲区优化数据发送速度。
作为上述方案的进一步优化,所述基于第四缓冲区接收数据的延时时序数据,预测下一时刻的延时数据,采用神经网络算法或者卡尔曼滤波延时估计算法中的至少一种。
作为上述方案的进一步优化,所述阈值分段的分段数值设置以及匹配的控制参数设置,通过粒子群优化算法获取。
作为上述方案的进一步优化,所述第四缓冲区接收音视频数据的延时数据,为第四缓冲区接收音视频数据时,以接收到的两个相邻数据包的时间戳的差值为基准时差,到达第四缓冲区的实际时间差与所述基准时差的差值,即为后一数据包的延时数值。
本发明还提供了一种音视频同步控制装置,包括:
独立缓冲单元,用于基于采集的音视频数据编码后分别发送到第一缓冲区和第二缓冲区;
混合缓冲单元,用于当第一缓冲区的音频数据达到发送阈值时,将第一缓冲区的音频数据发送到第三缓冲区,同时基于第三缓冲区内音频数据的时间戳信息,将第二缓冲区内具有相同时间戳信息的视频数据发送到第三缓冲区;
混合数据传输单元,用于基于第三换缓冲器的音视频数据通过网络传输到第四缓冲区;
解码播放单元,用于基于第四缓冲器的音视频混合数据分离后分别进行解码,并基于时间戳信息同步播放音视频数据。
本发明还提供了一种电子设备,所述电子设备包括:
存储器,用于存储可执行指令;
处理器,用于运行所述存储器存储的可执行指令时,实现上述的音视频同步控制方法。
本发明还提供了一种计算机可读存储介质,存储有可执行指令,所述可执行指令被处理器执行时实现上述的音视频同步控制方法。
本发明的一种音视频同步控制方法及装置,具备如下有益效果:
1.通过对音视频数据分别在编码后设置第一缓冲区和第二缓冲区,缓解音视频的不同步问题,同时考虑到网络传输对于音视频数据造成的不同步问题,在网络接收端设置了第四缓冲区,进一步降低音视频数据的不同步。
2.基于第四缓冲区的数据传输参数控制第三缓冲区的数据发送速度和控制采集的音视频数据编码发送到第一缓冲区和第二缓冲区的速度。基于第四缓冲区来减小网络时延对音视频内部同步的的影响,同时利用反馈机制对数据发送速度进行调节以使数据发送速度满足变动的网络传输环境,以减小音视频数据的相对延时,实现较高的音视频传输效率和稳定的数据传输质量。
3.通过基于第四缓冲区的数据传输参数设置不同的阈值分段并匹配对应的数据发送速度的控制参数,实现对不同网络传输状态下对音视频数据传输造成的不同步程度匹配最优的第三缓冲区数据发送速度,实现了准确的对数据发送速度的调节控制,且该不同的阈值分段以及对应的数据发送速度的控制参数设置采用粒子群优化算法寻优,确保获取最优的分段区间和控制参数。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本实施例提供的一种音视频同步控制方法,包括:
基于采集的音视频数据编码后分别发送到第一缓冲区和第二缓冲区;
当第一缓冲区的音频数据达到发送阈值时,将第一缓冲区的音频数据发送到第三缓冲区,同时基于第三缓冲区内音频数据的时间戳信息,将第二缓冲区内具有相同时间戳信息的视频数据发送到第三缓冲区;
基于第三换缓冲器的音视频数据通过网络传输到第四缓冲区;
基于第四缓冲器的音视频混合数据分离后分别进行解码,并基于时间戳信息同步播放音视频数据。
对于音视频流的多媒体而言,同步系统主要包括五个部分:数据采集、压缩编码、网络传输、解码恢复以及同步播放。音视频同步主要研究在数据采集、发送、传输和接收等过程中对音频信号和视频信号进行同步控制,最终目的是实现客户端音视频的同步播放。
考虑到音视频的编码速率不同造成音频数据和视频数据编码后的不同步,本实施例中通过对音视频数据分别在编码后设置第一缓冲区和第二缓冲区,缓解音视频的不同步问题,同时考虑到网络传输对于音视频数据造成的不同步问题,在网络接收端设置了第四缓冲区,进一步降低音视频数据的不同步。
上述的缓冲区可以采用队列存储形式或者双向链表存储形式,本实施例中优选队列存储形式。
上述基于时间戳信息同步播放音视频数据,包括:
基于音频流当前音频时间戳t1,判断视频流当前视频时间戳t2是否小于t1-Δ,若是,则舍弃播放当前视频帧;
判断|t2-t1|≤Δ,若是,则直接播放当前视频帧和音频数据;
判断t2是否大于t1+Δ,若是,则重复播放当前视频帧。
基于音频数据是连续性的,视频图像帧是非连续性的,本实施例中以音频数据的速率作为参考速度,当视频数据落后与音频数据时,考虑舍弃部分视频图像帧直至视频与音频数据时间戳同步,当视频数据超前与音频数据时,将视频图像帧重复播放直至视频与音频数据时间戳同步,当然上述视频与音频数据时间戳的同步具有一定的容忍度,当视频数据的时间戳在音频数据的时间戳t1的邻域Δ范围内都视为音视频数据同步。
本实施例的一种音视频同步控制方法,还包括基于第四缓冲区的数据传输参数控制第三缓冲区的数据发送速度和控制采集的音视频数据编码发送到第一缓冲区和第二缓冲区的速度。基于第四缓冲区来减小网络时延对音视频内部同步的的影响,同时利用反馈机制对数据发送速度进行调节以使数据发送速度满足变动的网络传输环境,以减小音视频数据的相对延时。
其中,基于第四缓冲区的数据传输参数控制第三缓冲区的数据发送速度,包括:
获取第四缓冲区接收数据的延时时序数据和丢包率,该延时数据是指第四缓冲区接收音视频数据时,以接收到的两个相邻数据包的时间戳的差值为基准时差,到达第四缓冲区的实际时间差与所述基准时差的差值,即为后一数据包的延时数值,采用了音视频数据的相对延时;
基于第四缓冲区接收数据的延时时序数据,预测下一时刻的延时数据;
基于下一时刻的延时预测数据判断所属第一阈值分段,基于第四缓冲区的丢包率,判断所属第二阈值分段;
基于所述第一阈值分段和第二阈值分段匹配对应的第三缓冲区数据发送速度的控制参数;
基于所述控制参数确定第三缓冲区的第一数据发送速度和第二数据发送速度;
基于第一数据发送速度和第二数据发送速度加权融合后获取第三缓冲区优化数据发送速度。
上述基于第四缓冲区接收数据的延时时序数据,预测下一时刻的延时数据,采用神经网络算法或者卡尔曼滤波延时估计算法中的至少一种,当采用卡尔曼滤波延时估计算法时,步骤如下:
获取卡尔曼滤波算法的初始化状态变量X0和协方差初值P0;
基于第四缓冲区数据发送速度与缓冲区数据量建立的系统状态方程进行下一状态预测和下一协方差矩阵预测;
获取增益矩阵,基于增益矩阵对状态变量和协方差更新。
当采用神经网络算法时,优选采用基于时序序列预测的LSTM网络模型进行延时预测模型的训练。
上述阈值分段的分段数值设置以及匹配的控制参数设置,通过粒子群优化算法获取,具体的,包括:
对粒子群算法进行参数初始化,基于阈值分段个数设置分段阈值数量a,,以a个从小到大排序的分段阈值以及对应的不同阈值分段的控制参数,组成一个向量作为粒子群优化算法中的一个粒子,初始化种群规模m,随机生成m个粒子作为初始种群;
计算每个粒子的适应度函数,该适应度函数为
其中,F2为调节速度过程中第四缓冲区的数据传输参数的优化目标函数;
基于每一次迭代时的每个粒子的位置对应的适应度函数,获取全局最优解以及每个粒子的最优解;
基于粒子群算法的位置和速度更新公式迭代更新粒子群,直至达到预设迭代次数,获取全局粒子最优解,作为阈值分段的分段数值以及匹配的控制参数。
本实施例中,还包括基于第四缓冲区的数据传输参数控制采集的音视频数据编码发送到第一缓冲区和第二缓冲区的速度,具体为:基于所述第三缓冲区优化数据发送速度,调节音视频数据的编码算法的编码参数以使编码速率与第三缓冲区数据发送速率匹配。基于前述对于第三缓冲区数据发送速度的调节,为了避免第一缓冲区和第二缓冲区的缓冲数据小于预设缓冲区下限阈值或者大于预设缓冲器上限阈值,设置当第三缓冲区发送速度处于不同等级时,对应不同的音视频编码参数,以调节音视频的编码速度,比如基于第三缓冲区当前的发送速度处于不同等级,设置视频编码后的不同的分辨率要求,分辨率可以设置为320*240、640*480等。
基于上述音视频同步控制方法,本实施例还提供了一种音视频同步控制装置,包括:
独立缓冲单元,用于基于采集的音视频数据编码后分别发送到第一缓冲区和第二缓冲区;
混合缓冲单元,用于当第一缓冲区的音频数据达到发送阈值时,将第一缓冲区的音频数据发送到第三缓冲区,同时基于第三缓冲区内音频数据的时间戳信息,将第二缓冲区内具有相同时间戳信息的视频数据发送到第三缓冲区;
混合数据传输单元,用于基于第三换缓冲器的音视频数据通过网络传输到第四缓冲区;
解码播放单元,用于基于第四缓冲器的音视频混合数据分离后分别进行解码,并基于时间戳信息同步播放音视频数据。
进一步的,上述一种音视频同步控制装置,还包括反馈单元,用于基于第四缓冲区的数据传输参数控制第三缓冲区的数据发送速度和控制采集的音视频数据编码发送到第一缓冲区和第二缓冲区的速度。该反馈单元包括延时数据预测单元,用于基于第四缓冲区接收数据的延时时序数据,采用神经网络算法或者卡尔曼滤波延时估计算法中的至少一种,预测下一时刻的延时数据,阈值分段的分段数值设置以及第三缓冲区数据发送速度控制参数设置单元,用于基于粒子群优化算法获取阈值分段的分段数值设置以及匹配的控制参数设置。
本实施例提供的音视频同步控制装置可以采用软硬件结合的方式实现,作为示例,本发明实施例所提供的音视频同步控制装置可以直接体现为由处理器执行的软件模块组合,软件模块可以位于存储介质中,存储介质位于存储器,处理器读取存储器中软件模块包括的可执行指令,结合必要的硬件(例如,包括处理器以及连接到总线的其他组件)完成本发明实施例提供的音视频同步控制方法。
基于上述音视频同步控制方法,本实施例还提供了一种电子设备,所述电子设备包括:
存储器,用于存储可执行指令;
处理器,用于运行所述存储器存储的可执行指令时,实现上述的音视频同步控制方法。
基于上述音视频同步控制方法,本实施例还提供了一种计算机可读存储介质,存储有可执行指令,所述可执行指令被处理器执行时实现上述的音视频同步控制方法。
该电子设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、电子程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的数据库用于存储音视频数据等。该电子设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种音视频同步控制方法。
本发明不局限于上述具体的实施方式,本领域的普通技术人员从上述构思出发,不经过创造性的劳动,所做出的种种变换,均落在本发明的保护范围之内。