CN107566889B - 音频流流速误差处理方法、装置、计算机装置及计算机可读存储介质 - Google Patents
音频流流速误差处理方法、装置、计算机装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN107566889B CN107566889B CN201710832133.9A CN201710832133A CN107566889B CN 107566889 B CN107566889 B CN 107566889B CN 201710832133 A CN201710832133 A CN 201710832133A CN 107566889 B CN107566889 B CN 107566889B
- Authority
- CN
- China
- Prior art keywords
- audio
- time
- code stream
- playing
- frame
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明适用于音视频技术领域,提供了一种音频流流速误差的处理方法、装置、计算机装置及计算机可读存储介质,方法包括:获取缓存中的音频帧数据;对音频帧数据进行解析,获取音频帧数据的第一帧的时间戳;根据第一帧的时间戳和音频播放启动时最新进入缓冲的音频帧的时间戳的差值,获取音频播放的初始码流时间漂移;对音频帧数据进行解码渲染,计算实际音频渲染时间;根据实际音频渲染时间和音频帧数据解码过程中当前最新进入缓冲的音频帧的时间戳的差值,获取实时码流播放时间漂移;当实时码流播放时间漂移与初始码流时间漂移不一致否时,调快或者调慢音频播放速度。消除音频播放过程中前端传输精度误差所带来的缓冲上下溢的问题,提高了产品稳定性。
Description
技术领域
本发明属于音视频技术领域,尤其涉及一种音频流流速误差处理方法、装置、计算机装置及计算机可读存储介质。
背景技术
MPEG2-TS是一用于音效、影像与资料的通讯协定,其中的传输流(TransportStream,TS)已经成为数字电视领域中普遍应用的装置层编码标准。传输流针对有一定误码信道的传输,可以将多路节目复合成一个流进行传输,它允许同一路节目包含多个音频和视频流,同时也可以加入一些附加信息。
目前,在对实时MPEG2-TS音视频流进行处理时,通常通过USB或者网络方式实时接收通信端口传输的实时MPEG2-TS音视频流,并通过音视频播放器采用解复用、解码、渲染的流程进行处理,以便进行播放,但是音视频播放器在处理实时MPEG2-TS音视频流时,都是按照当前的节目的音视频实际码率来控制播放的,而MPEG2-TS实时码流前端在播出节目时,有些码流播放会出现播出码流率误差(+/-0.5%),导致音视频数据生产-消费不平衡,精度误差会导致码流的流速和实际的解码速度不匹配,从而导致播放器的音视频缓冲会出现数据的上下溢问题,使得产品的观看体验变得不稳定,声音卡顿和中断,画面马赛克,有的甚至会导致装置崩溃等不良问题。
发明内容
本发明提供一种音频流流速误差处理方法,旨在解决现有技术中由于码流的流速和实际的解码速度不匹配,从而导致播放器的音视频缓冲会出现数据的上下溢问题的问题。
本发明是这样实现的,一种音频流流速误差处理方法,包括如下步骤:
获取缓存中的音频帧数据;
对所述音频帧数据进行解析,获取所述音频帧数据的第一帧的时间戳。
根据所述第一帧的时间戳和音频播放启动时最新进入缓冲的音频帧对应的时间戳之间的差值,获取所述音频播放的初始码流时间漂移;
对所述音频帧数据进行解码渲染,并计算实际音频渲染时间;
根据所述实际音频渲染时间和音频帧数据解码过程中当前最新进入缓冲的音频帧对应的时间戳之间的差值,获取实时码流播放时间漂移;
判断所述实时码流播放时间漂移与所述音频播放的初始码流时间漂移是否一致;
当判断结果为否时,通过步进反馈调快或者调慢音频播放速度。
本发明还提供了一种音频流流速误差处理装置,包括:
音频帧数据获取单元,用于获取缓存中的音频帧数据;
解析单元,用于对所述音频帧数据进行解析,获取所述音频帧数据的第一帧的时间戳。
初始时间漂移获取单元,用于根据所述第一帧的时间戳和音频播放启动时最新进入缓冲的音频帧对应的时间戳之间的差值,获取所述音频播放的初始码流时间漂移;
实际音频渲染时间获取单元,用于对所述音频帧数据进行解码渲染,并计算实际音频渲染时间;
实时码流播放时间漂移获取单元,根据所述实际音频渲染时间和解码过程中当前最新缓冲的音频帧对应的时间戳之间的差值,获取实时码流播放时间漂移;
判断单元,用于判断所述实时码流播放时间漂移与所述音频播放的初始码流时间漂移是否一致;
音频播放调节单元,用于当判断结果为否时,通过步进反馈调快或者调慢音频播放速度。
本发明还提供一种计算机装置,所述计算机装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求所述的音频流流速误差处理方法的步骤。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序(指令),其特征在于,所述计算机程序(指令)被处理器执行时实现所述音频流流速误差处理方法的步骤。
本发明实施例中,根据音频帧数据的第一帧时间戳以及音频播放启动时最新进入缓冲的音频帧对应的时间戳之间的差值,获取音频帧播放启动之前所缓冲的码流时间长度,并根据音频帧数据解码渲染过程中的实际音频渲染时间以及解码过程中当前最新进入缓冲的音频帧对应的时间戳之间的差值,获取实时码流播放时间长度,从而判断音频帧播放启动之前所缓冲的码流时间长度与实时码流播放时间长度是否一致,当其不一致时,通过步进反馈调快或者调慢音频播放速度,以使码流流速和实际的解码速度匹配,消除音频播放过程中前端传输精度误差所带来的缓冲上下溢的问题,是音视频播放更为流畅,提高了产品稳定性。
附图说明
图1是本发明实施例提供的一种音频流流速误差处理方法的实现流程图;
图2是本发明实施例提供的一种实际音频渲染时间计算方法的实现流程图;
图3是本发明实施例提供的另一种音频流流速误差方法的实现流程图;
图4是本发明实施例提供的一种音频流流速误差装置的结构示意图;
图5是本发明实施例提供的一种实际音频渲染时间获取单元的结构示意图;
图6是本发明实施例提供的另一种音频流流速误差装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例中,根据音频帧数据的第一帧时间戳以及音频播放启动时最新进入缓冲的音频帧对应的时间戳之间的差值,获取音频帧播放启动之前所缓冲的码流时间长度,并根据音频帧数据解码渲染过程中的实际音频渲染时间以及解码过程中当前最新进入缓冲的音频帧对应的时间戳之间的差值,获取实时码流播放时间长度,从而判断音频帧播放启动之前所缓冲的码流时间长度与实时码流播放时间长度是否一致,当其不一致时,通过步进反馈调快或者调慢音频播放速度,以使码流流速和实际的解码速度匹配,消除音频播放过程中前端传输精度误差所带来的缓冲上下溢的问题,是音视频播放更为流畅,提高了产品稳定性。
实施例一、
图1示出了本发明实施例提供的一种音频流流速误差处理方法,详述如下:
在步骤S110中,获取缓存中的音频帧数据。
在本发明实施例中,音频帧数据具体可通过网络端口或者USB端口等通信端口接收到实时的音视频流数据,经解复用模块解复用处理后,进行缓存的音频数据。
在步骤S120中,对所述音频帧数据进行解析,获取所述音频帧数据的第一帧的时间戳。
作为本发明的一个实施例,音频帧数据包括音频帧序列,将获取的音频帧序列传输到AudioQueue音频处理框架中进行播放处理,AudioQueue音频处理框架接收到音频帧序列后,通过对音频帧序列的PES包头进行 解析得到多个音频帧数据单元以及其对应的时间戳,并记录第一帧数据单元对应的时间戳PTS0。
其中,该时间戳可用以表示在声音界面输出声音的时间,可通过解复用模块从音频流数据中解析获取。
在步骤S130中,根据所述第一帧的时间戳和音频播放启动时最新进入缓冲的音频帧对应的时间戳之间的差值,获取所述音频播放的初始码流时间漂移。
在本发明实施例中,音频播放的初始码流时间漂移表示音频播放启动之前所缓冲的码流时间长度。
在本发明实施例中,当音频帧数据解析完成后,初始化音频播放启动处理,并将装置播放状态标记为已经开始播放,记录此时的音频帧缓冲区最新到来的音频帧以及其对应的时间戳PTSS,根据第一帧的时间戳PTS0以及时间戳PTSS之间的差值,获取音频播放启动之前所缓冲的码流时间长度,即,播放启动之前所缓冲的码流时间长度= pts_drift0 =(PTSS-PTS0)。
在步骤S140中,对所述音频帧数据进行解码渲染,并计算实际音频渲染时间。
在本发明实施例中,当音频播放初始化完成后,进入音频帧播放处理流程,并不断将后续的音频数据传输到AudioQueue音频处理框架进行解码渲染并输出,声音正常播放,同时读取解码参数,并根据该解码参数计算音频渲染输出时间ΔPTS,并根据第一帧的时间戳PTS0,计算实际音频渲染时间,即,实际音频渲染时间PTS=ΔPTS+ PTS0。
其中,解码参数包括音频格式,采样率,帧大小以及帧时长等。
在本发明实施例中,实际音频渲染时间PTS可提供给视频帧数据作为同步参考,使得视频处理可以根据音频处理的节奏,以达到同步播放的效果。
在步骤S150中,根据所述实际音频渲染时间和音频帧数据解码过程中当前最新进入缓冲的音频帧对应的时间戳之间的差值,获取实时码流播放时间漂移。
在本发明实施例中,实时码流播放时间漂移为音频播放时,码流播放的时间长度。
在本发明实施例中,在音频帧数据解码过程中,实时记录音频缓冲区中最新进入的音频帧及其对应的时间戳PTSN,根据该时间戳PTSN与实际音频渲染时间PTS之间的差值,获取实时码流播放时间漂移,即,实时码流播放时间漂移=pts_drift=ptsN-pts。
在步骤S160中,判断所述实时码流播放时间漂移与所述音频播放的初始码流时间漂移是否一致。
在本发明实施例中,通过获取的初始码流播放时间漂移以及音频播放的厨师码流时间漂移,计算两者之间的差值,当差值为0时,则说明实时码流播放时间漂移与所述音频播放的初始码流时间漂移一致。
进一步, 为避免初始码流播放时间漂移以及音频播放的厨师码流时间漂移的差值较小,可忽略的情况,比如,0.0001,可设置预设阈值,判断该差值是否在预设阈值的范围内,当在其范围内,则认为实时码流播放时间漂移与所述音频播放的初始码流时间漂移一致。
其中,该预设阈值可为具体的数值,比如,±0.1等,具体可以根据实际情况进行设置,本发明不做限定。
在步骤S170中,当判断结果为否时,通过步进反馈调快或者调慢音频播放速度。
在本发明实施例中,步进反馈调节是采用某个精度(比如,十万分之一),做线性步进,比如,前端码流流速慢,此时启动每帧音频播放速度降低十万分之一,第二帧音频播放速度降低十万分之二,直到时间推移到某个精度时,输入输出达到速率匹配平衡。
在本发明实施例中,当判断结果为否时,说明实时码流播放时间漂移与所述音频播放的初始码流时间漂移不一致,具体可包括如下情况:
当实时码流播放时间漂移小于缓冲的初始码流时间漂移时,通过步进反馈调慢音频码流流速;
当实时码流播放时间漂移大于缓冲的初始码流时间漂移时,通过步进反馈调快音频码流流速。
当实时码流播放时间漂移小于所述缓冲的初始码流时间漂移时,表示当前码流解码输出消费的速度大于实际上前端的码流流速,这种情况下音频帧缓冲区发送下溢,导致码流断流,从而造成AudioQueue音频处理框架的服务终止,声音停止输出或者卡顿。为防止下溢发生,需要步进调慢音频播放的速度,具体的,通过AudioQueue音频处理框架的接口设置声卡输出的采样时钟来改变解码输出的速度,降低时钟频率,以降低音频播放速度。
当实时码流播放时间漂移大于缓冲的初始码流时间漂移,会造成音频帧缓冲区中的音频帧数量增长,当达到一定的数量时,为防止缓冲区上溢,通过步进调快音频播放的速度,使得缓冲区的音频帧数量保持在预设阈值范围内,达到动态平衡。
当判断结果为是,则表示前实时码流前端流速正常,装置维持正常播放速度的解码渲染处理。
实施例二、
在本发明实施例中,步骤S120中,所述对所述音频帧数据进行解析,获取所述音频帧数据的第一帧的时间戳,包括:
在步骤S121中,对所述音频数据帧的解码参数进行解析,获取音频采样率以及音频帧时长,并记录所述音频帧数据的第一帧的时间戳;
在本发明实施例中,音频采样率为每帧音频对应的音频采样数,而音频帧时长为每个音频帧的播放时长。
作为本发明的一个实施例,音频帧数据包括音频帧序列,将获取的音频帧序列传输到AudioQueue音频处理框架中进行播放处理,AudioQueue音频处理框架接收到音频帧序列后,通过对音频帧序列的PES包头进行解析获取相关音频数据,并记录第一帧音频帧数据对应的时间戳PTS0。
在本发明实施例中,解码参数包括音频格式,采样率,帧大小,帧时长等,经过对音频帧数据的解码参数进行解析后,获取的当前传输的音频帧数据的音频格式,采样率,帧大小,帧时长等具体的数据,比如,解析后得到当前解析的音频帧数据的采样数为1024个。
参见图2,在步骤S140中,所述当开始进行音频播放时,对所述音频帧数据进行解码渲染,并计算实际音频渲染时间,包括:
在步骤S141中,读取音频采样数。
在本发明实施例中,当音频播放初始化完成后,进入音频帧播放处理流程,并不断将后续的音频数据传输到AudioQueue音频处理框架进行解码渲染后进行输出,声音正常播放,并通过AudioQueue音频处理框架的输出端读取音频采样数。
在本发明实施例中,音频采样数为音频帧数据的采样的次数,由于音频处理时是通过将声波波形转换成一连串的二进制数据来再现原始声音的,实现这个步骤使用的设备是模/数转换器(A/D)它以每秒上万次的速率对声波进行采样,所以音频采样数即为音频采集的次数。
在步骤S142中,根据所述音频采样率以及所述音频采样数之间的商,获取音频帧数。
在本发明实施例中,音频采样率为每帧音频数据对应的采样数,因此在获取到音频采样数后,根据音频采样数以及音频采样率之间的商,即可获取采集到的音频采样数对应的音频帧数。
在步骤S143中,根据所述音频帧数与所述音频帧时长的乘积,计算音频渲染时间。
在本发明实施例中,在获取到音频帧数后,根据解析到的音频帧时长与音频帧数之间的乘积,获取音频帧的音频渲染时间,比如,音频帧数为100,音频帧时长为0.01秒,则音频渲染时间为1秒。需要说明的是,在进行计算时需要统一时间单位。
在步骤S144中,根据所述第一帧时间戳以及所述音频渲染时间的和值,获取实际音频渲染时间。
在本发明实施例中,实际音频渲染时间PTS可提供给视频帧数据作为同步参考,使得视频处理可以根据音频处理的节奏,以达到同步播放的效果。
在本发明实施例中,实际音频渲染时间可以通过音频帧数据的第一帧时间戳与音频渲染时间之间的和进行获取,比如,第一帧音频帧的时间戳为3秒,音频渲染时间为5秒,则实际音频渲染时间为8秒。
实施例三、
图3示出了本发明实施例提供的另一种音频流流速误差处理方法的实现流程,其与实施例一相似,不同之处在于,所述获取缓存中的音频帧数据,之前包括:
在步骤S210中,实时接收音频流数据。
在本发明实施例中,可通过网络端口、USB端口等通信端口实时接收音频流数据,该音频流数据可为压缩音频数据或者原始音频数据。
在步骤S220中,对所述音频流数据进行解复用,以获取音频帧数据。
在本发明实施例中,当接收音频流数据后,通过解复用模块将该音频流数据中类型相同的Packet进行存储,分别处理。以将音频或者其他业务信息的数据区分开来。其作用在于,将音频流数据中数据包分离,相同节目的TS包进行提取组合成音频帧的数据块。
在步骤S230中,对所述音频帧数据进行缓存与平滑处理。
在本发明实施例中,对音频帧数据进行缓冲以及平滑处理,主要通过开辟一块内存,用于存储解复用后输出的PES流数据,由于实时传输流可能存在延时或者抖动,同时装置也存在调度的上分配,因此解复用模块对实时音频流数据的处理输出就会有瞬时峰值及低谷,将会发生在下一级的消费则会对流的抖动不能适应,导致播放异常的问题,因此需要对解复用后的PES流数据进行平滑缓冲,即流在内存中缓存下来,然后以一定的消费速度向一级模块输入,起到了平滑作用。
其中,PES流为基本码流,PES是打包过的ES(基本单元流,解复用后的视频流或音频流),已经插入PTS和DTS,一般是一个PES包为一帧图像。
本发明实施例中,根据音频帧数据的第一帧时间戳以及音频播放启动时最新进入缓冲的音频帧对应的时间戳之间的差值,获取音频帧播放启动之前所缓冲的码流时间长度,并根据音频帧数据解码渲染过程中的实际音频渲染时间以及解码过程中当前最新进入缓冲的音频帧对应的时间戳之间的差值,获取实时码流播放时间长度,从而判断音频帧播放启动之前所缓冲的码流时间长度与实时码流播放时间长度是否一致,当其不一致时,通过步进反馈调快或者调慢音频播放速度,以使码流流速和实际的解码速度匹配,消除音频播放过程中前端传输精度误差所带来的缓冲上下溢的问题,是音视频播放更为流畅,提高了产品稳定性。
实施例四、
图4示出了本发明实施例提供的一种音频流流速误差处理装置400的结构,为了便于说明,仅示出了与本发明实施例相关的部分。
音频流流速误差处理装置300包括:音频帧数据获取单元31、解析单元32、初始时间漂移获取单元33、实际音频渲染时间获取单元34、实时码流播放时间漂移获取单元35、判断单元36以及音频播放调节单元37。
音频帧数据获取单元31,用于获取缓存中的音频帧数据。
在本发明实施例中,音频帧数据具体可通过网络端口或者USB端口等通信端口接收到实时的音视频流数据,经解复用模块解复用处理后,进行缓存的音频数据。
解析单元32,用于对所述音频帧数据进行解析,获取所述音频帧数据的第一帧的时间戳。
作为本发明的一个实施例,音频帧数据包括音频帧序列,将获取的音频帧序列传输到AudioQueue音频处理框架中进行播放处理,AudioQueue音频处理框架接收到音频帧序列后,通过对音频帧序列的PES包头进行 解析得到多个音频帧数据单元以及其对应的时间戳,并记录第一帧数据单元对应的时间戳PTS0。
其中,该时间戳可用以表示在声音界面输出声音的时间,可通过解复用模块从音频流数据中解析获取。
初始时间漂移获取单元33,用于根据所述第一帧的时间戳和音频播放启动时最新进入缓冲的音频帧对应的时间戳之间的差值,获取所述音频播放的初始码流时间漂移。
在本发明实施例中,音频播放的初始码流时间漂移表示音频播放启动之前所缓冲的码流时间长度。
在本发明实施例中,当音频帧数据解析完成后,初始化音频播放启动处理,并将装置播放状态标记为已经开始播放,记录此时的音频帧缓冲区最新到来的音频帧以及其对应的时间戳PTSS,根据第一帧的时间戳PTS0以及时间戳PTSS之间的差值,获取音频播放启动之前所缓冲的码流时间长度,即,播放启动之前所缓冲的码流时间长度= pts_drift0 =(PTSS-PTS0)。
实际音频渲染时间获取单元34,用于对所述音频帧数据进行解码渲染,并计算实际音频渲染时间。
在本发明实施例中,当音频播放初始化完成后,进入音频帧播放处理流程,并不断将后续的音频数据传输到AudioQueue音频处理框架进行解码渲染并输出,声音正常播放,同时获取解码参数,并根据该解码参数计算音频渲染输出时间ΔPTS,并根据第一帧的时间戳PTS0,计算实际音频渲染时间,即,实际音频渲染时间PTS=ΔPTS+ PTS0。
其中,解码参数包括音频格式,采样率,帧大小,帧时长等。
在本发明实施例中,实际音频渲染时间PTS可提供给视频帧数据作为同步参考,使得视频处理可以根据音频处理的节奏,以达到同步播放的效果。
实时码流播放时间漂移获取单元35,用于根据所述实际音频渲染时间和音频帧数据解码过程中当前最新进入缓冲的音频帧对应的时间戳之间的差值,获取实时码流播放时间漂移。
在本发明实施例中,实时码流播放时间漂移为音频播放时,码流播放的时间长度。
在本发明实施例中,在音频帧数据解码过程中,实时记录音频缓冲区中最新进入的音频帧及其对应的时间戳PTSN,根据该时间戳PTSN与实际音频渲染时间PTS之间的差值,获取实时码流播放时间漂移,即,时码流播放时间漂移=pts_drift=ptsN-pts。
判断单元36,用于判断所述实时码流播放时间漂移与所述音频播放的初始码流时间漂移是否一致。
在本发明实施例中,通过获取的初始码流播放时间漂移以及音频播放的厨师码流时间漂移,计算两者之间的差值,当差值为0时,则说明实时码流播放时间漂移与所述音频播放的初始码流时间漂移一致。
进一步, 为避免初始码流播放时间漂移以及音频播放的厨师码流时间漂移的差值较小,可忽略的情况,比如,0.0001,可设置预设阈值,判断该差值是否在预设阈值的范围内,当在其范围内,则认为实时码流播放时间漂移与所述音频播放的初始码流时间漂移一致。
其中,该预设阈值可为具体的数值,比如,±0.1等,具体可以根据实际情况进行设置,本发明不做限定。
音频播放调节单元37,用于当判断结果为否时,通过步进反馈调快或者调慢音频播放速度。
在本发明实施例中,步进反馈调节是采用某个精度(比如,十万分之一),做线性步进,比如,前端码流流速慢,此时启动每帧音频播放速度降低十万分之一,第二帧音频播放速度降低十万分之二,直到时间推移到某个精度时,输入输出达到速率匹配平衡。
在本发明实施例中,当判断结果为否时,说明实时码流播放时间漂移与所述音频播放的初始码流时间漂移不一致,具体可包括如下情况:
当实时码流播放时间漂移小于缓冲的初始码流时间漂移时,通过步进反馈调慢音频码流流速;
当实时码流播放时间漂移大于缓冲的初始码流时间漂移时,通过步进反馈调快音频码流流速。
当实时码流播放时间漂移小于所述缓冲的初始码流时间漂移时,表示当前码流解码输出消费的速度大于实际上前端的码流流速,这种情况下音频帧缓冲区发送下溢,导致码流断流,从而造成AudioQueue音频处理框架的服务终止,声音停止输出或者卡顿。为防止下溢发生,需要步进调慢音频播放的速度,具体的,通过AudioQueue音频处理框架的接口设置声卡输出的采样时钟来改变解码输出的速度,降低时钟频率,以降低音频播放速度。
当实时码流播放时间漂移大于缓冲的初始码流时间漂移,会造成音频帧缓冲区中的音频帧数量增长,当达到一定的数量时,为防止缓冲区上溢,通过步进调快音频播放的速度,使得缓冲区的音频帧数量保持在预设阈值范围内,达到动态平衡。
当判断结果为是,则表示前实时码流前端流速正常,装置维持正常播放速度的解码渲染处理。
本发明实施例中,根据音频帧数据的第一帧时间戳以及音频播放启动时最新进入缓冲的音频帧对应的时间戳之间的差值,获取音频帧播放启动之前所缓冲的码流时间长度,并根据音频帧数据解码渲染过程中的实际音频渲染时间以及解码过程中当前最新进入缓冲的音频帧对应的时间戳之间的差值,获取实时码流播放时间长度,从而判断音频帧播放启动之前所缓冲的码流时间长度与实时码流播放时间长度是否一致,当其不一致时,通过步进反馈调快或者调慢音频播放速度,以使码流流速和实际的解码速度匹配,消除音频播放过程中前端传输精度误差所带来的缓冲上下溢的问题,是音视频播放更为流畅,提高了产品稳定性。
实施例五、
在本发明实施例中,
解析单元32,包括解析模块。
解析模块,用于对所述音频数据帧的解码参数进行解析,获取音频采样率以及音频帧时长,并记录所述音频帧数据的第一帧的时间戳。
在本发明实施例中,音频采样率为每帧音频对应的音频采样数,而音频帧时长为每个音频帧的播放时长。
作为本发明的一个实施例,音频帧数据包括音频帧序列,将获取的音频帧序列传输到AudioQueue音频处理框架中进行播放处理,AudioQueue音频处理框架接收到音频帧序列后,通过对音频帧序列的PES包头进行解析获取相关音频数据,并记录第一帧音频帧数据对应的时间戳PTS0。
在本发明实施例中,解码参数包括音频格式,采样率,帧大小,帧时长等,经过对音频帧数据的解码参数进行解析后,获取的当前传输的音频帧数据的音频格式,采样率,帧大小,帧时长等具体的数据,比如,解析后得到当前解析的音频帧数据的采样数为1024个。
参见图5,实际音频渲染时间获取单元34,包括:音频采样率读取单元341、音频帧数获取单元342、音频渲染时间计算单元343以及实际音频渲染时间获取模块344。
音频采样率读取单元341,用于读取音频采样率。
在本发明实施例中,当音频播放初始化完成后,进入音频帧播放处理流程,并不断将后续的音频数据传输到AudioQueue音频处理框架进行解码渲染后进行输出,声音正常播放,并通过AudioQueue音频处理框架的输出端读取音频采样数。
在本发明实施例中,音频采样数为音频帧数据的采样的次数,由于音频处理时是通过将声波波形转换成一连串的二进制数据来再现原始声音的,实现这个步骤使用的设备是模/数转换器(A/D)它以每秒上万次的速率对声波进行采样,所以音频采样数即为音频采集的次数。
音频帧数获取单元342,用于根据所述音频采样率以及所述音频采样数之间的商,获取音频帧数。
在本发明实施例中,音频采样率为每帧音频数据对应的采样数,因此在获取到音频采样数后,根据音频采样数以及音频采样率之间的商,即可获取采集到的音频采样数对应的音频帧数。
音频渲染时间计算单元343,用于根据所述音频帧数与所述音频帧时长的乘积,计算音频渲染时间。
在本发明实施例中,在获取到音频帧数后,根据解析到的音频帧时长与音频帧数之间的乘积,获取音频帧的音频渲染时间,比如,音频帧数为100,音频帧时长为0.01秒,则音频渲染时间为1秒。需要说明的是,在进行计算时需要统一时间单位。
实际音频渲染时间获取模块344,用于根据所述第一帧时间戳以及所述音频渲染时间的和值,获取实际音频渲染时间。
在本发明实施例中,实际音频渲染时间PTS可提供给视频帧数据作为同步参考,使得视频处理可以根据音频处理的节奏,以达到同步播放的效果。
在本发明实施例中,实际音频渲染时间可以通过音频帧数据的第一帧时间戳与音频渲染时间之间的和进行获取,比如,第一帧音频帧的时间戳为3秒,音频渲染时间为5秒,则实际音频渲染时间为8秒。
实施例六、
图6示出了本发明实施例提供的另一种音频流流速误差处理装置的结构,为了便于说明,仅示出了与本发明实施例相关的部分。
音频流流速误差处理装置300还包括:音频流数据接收单元41、解复用单元42以及缓存单元43。
音频流数据接收单元41,用于实时接收音频流数据。
在本发明实施例中,可通过网络端口、USB端口等通信端口实时接收音频流数据,该音频流数据可为压缩音频数据或者原始音频数据。
解复用单元42,用于对所述音频流数据进行解复用,以获取音频帧数据。
在本发明实施例中,当接收音频流数据后,通过解复用模块将该音频流数据中类型相同的Packet进行存储,分别处理。以将音频或者其他业务信息的数据区分开来。其作用在于,将音频流数据中数据包分离,相同节目的TS包进行提取组合成音频帧的数据块。
缓存单元43,用于对所述音频帧数据进行缓存与平滑处理。
在本发明实施例中,对音频帧数据进行缓冲以及平滑处理,主要通过开辟一块内存,用于存储解复用后输出的PES流数据,由于实时传输流可能存在延时或者抖动,同时装置也存在调度的上分配,因此解复用模块对实时音频流数据的处理输出就会有瞬时峰值及低谷,将会发生在下一级的消费则会对流的抖动不能适应,导致播放异常的问题,因此需要对解复用后的PES流数据进行平滑缓冲,即流在内存中缓存下来,然后以一定的消费速度向一级模块输入,起到了平滑作用。
其中,PES流为基本码流,PES是打包过的ES(基本单元流,解复用后的视频流或音频流),已经插入PTS和DTS,一般是一个PES包为一帧图像。
本发明实施例中,根据音频帧数据的第一帧时间戳以及音频播放启动时最新进入缓冲的音频帧对应的时间戳之间的差值,获取音频帧播放启动之前所缓冲的码流时间长度,并根据音频帧数据解码渲染过程中的实际音频渲染时间以及解码过程中当前最新进入缓冲的音频帧对应的时间戳之间的差值,获取实时码流播放时间长度,从而判断音频帧播放启动之前所缓冲的码流时间长度与实时码流播放时间长度是否一致,当其不一致时,通过步进反馈调快或者调慢音频播放速度,以使码流流速和实际的解码速度匹配,消除音频播放过程中前端传输精度误差所带来的缓冲上下溢的问题,是音视频播放更为流畅,提高了产品稳定性。
本发明实施例还提供了一种计算机装置,该计算机装置包括处理器和存储器,处理器用于执行存储器中存储的计算机程序时实现上述发明实施例提供的音频流流速误差处理方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序(指令),该计算机程序(指令)被处理器执行时实现上述发明实施例提供的音频流流速误差方法的步骤。
示例性的,计算机程序可以被分割成一个或多个模块,一个或者多个模块被存储在存储器中,并由处理器执行,以完成本发明。一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在计算机装置中的执行过程。例如,计算机程序可以被分割成上述各个方法实施例提供的报站方法的步骤。
本领域技术人员可以理解,上述计算机装置的描述仅仅是示例,并不构成对计算机装置的限定,可以包括比上述描述更多或更少的部件,或者组合某些部件,或者不同的部件,例如可以包括输入输出设备 、网络接入设备、总线等。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作装置、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
所述计算机装置集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信号以及软件分发介质等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种处理音频流流速误差的方法,其特征在于,所述方法包括:
获取缓存中的音频帧数据;
对所述音频帧数据进行解析,获取所述音频帧数据的第一帧的时间戳;
根据所述第一帧的时间戳和音频播放启动时最新进入缓冲的音频帧对应的时间戳之间的差值,获取所述音频播放的初始码流时间漂移;
对所述音频帧数据进行解码渲染,得到音频渲染时间,并根据所述第一帧的时间戳以及所述音频渲染时间的和值获取实际音频渲染时间;
根据所述实际音频渲染时间和音频帧数据解码过程中当前最新进入缓冲的音频帧对应的时间戳之间的差值,获取实时码流播放时间漂移;
判断所述实时码流播放时间漂移与所述音频播放的初始码流时间漂移是否一致;
当判断结果为否时,通过步进反馈调快或者调慢音频播放速度。
2.如权利要求1所述的处理音频流流速误差的方法,其特征在于,所述对所述音频帧数据进行解析,获取所述音频帧数据的第一帧的时间戳,包括:
对所述音频数据帧的解码参数进行解析,获取音频采样率以及音频帧时长,并记录所述音频帧数据的第一帧的时间戳;
当开始进行音频播放时,对所述音频帧数据进行解码渲染,并计算实际音频渲染时间,包括:
读取音频采样数;
根据所述音频采样率以及所述音频采样数之间的商,获取音频帧数;
根据所述音频帧数与所述音频帧时长的乘积,计算音频渲染时间;
根据所述第一帧时间戳以及所述音频渲染时间的和值,获取实际音频渲染时间。
3.如权利要求1所述的处理音频流流速误差的方法,其特征在于,所述获取缓存中的音频帧数据,之前包括:
实时接收音频流数据;
对所述音频流数据进行解复用,以获取音频帧数据;
对所述音频帧数据进行缓存与平滑处理。
4.如权利要求1所述的处理音频流流速误差的方法,其特征在于,所述当判断结果为否时,通过步进反馈调快或者调慢音频码流流速,包括:
当所述实时码流播放时间漂移小于所述缓冲的初始码流时间漂移时,通过所述步进反馈调慢所述音频码流流速;
当所述实时码流播放时间漂移大于所述缓冲的初始码流时间漂移时,通过所述步进反馈调快所述音频码流流速。
5.一种处理音频流流速误差的装置,其特征在于,所述装置包括:
音频帧数据获取单元,用于获取缓存中的音频帧数据;
解析单元,用于对所述音频帧数据进行解析,获取所述音频帧数据的第一帧的时间戳;
初始时间漂移获取单元,用于根据所述第一帧的时间戳和音频播放启动时最新进入缓冲的音频帧对应的时间戳之间的差值,获取所述音频播放的初始码流时间漂移;
实际音频渲染时间获取单元,用于对所述音频帧数据进行解码渲染,得到音频渲染时间,并根据所述第一帧的时间戳以及所述音频渲染时间的和值获取计算实际音频渲染时间;
实时码流播放时间漂移获取单元,用于根据所述实际音频渲染时间和解码过程中当前最新缓冲的音频帧对应的时间戳之间的差值,获取实时码流播放时间漂移;
判断单元,用于判断所述实时码流播放时间漂移与所述音频播放的初始码流时间漂移是否一致;
音频播放调节单元,用于当判断结果为否时,通过步进反馈调快或者调慢音频播放速度。
6.如权利要求5所述的处理音频流流速误差的装置,其特征在于,所述解析单元还用于:
解析模块,用于对所述音频数据帧的解码参数进行解析,获取音频采样率以及音频帧时长,并记录所述音频帧数据的第一帧的时间戳;
所述实际音频渲染时间获取单元,包括:
音频采样率读取单元,用于读取音频采样率
音频帧数获取单元,用于根据所述音频采样率以及所述音频采样数之间的商,获取音频帧数;
音频渲染时间计算单元,用于根据所述音频帧数与所述音频帧时长的乘积,计算音频渲染时间;
实际音频渲染时间获取模块,用于根据所述第一帧时间戳以及所述音频渲染时间的和值,获取实际音频渲染时间。
7.如权利要求5所述的处理音频流流速误差的装置,其特征在于,所述装置,还包括:
音频流数据接收单元,用于实时接收音频流数据;
解复用单元,用于对所述音频流数据进行解复用,以获取音频帧数据;
缓存单元,用于对所述音频帧数据进行缓存与平滑处理。
8.如权利要求5所述的处理音频流流速误差的装置,其特征在于,所述音频播放调节单元,还用于:
当所述实时码流播放时间漂移小于所述缓冲的初始码流时间漂移时,通过所述步进反馈调慢所述音频码流流速;或者
当所述实时码流播放时间漂移大于所述缓冲初始码流时间漂移时,通过所述步进反馈调快所述音频码流流速。
9.一种计算机装置,其特征在于,所述计算机装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1-4中任意一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-4中任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710832133.9A CN107566889B (zh) | 2017-09-15 | 2017-09-15 | 音频流流速误差处理方法、装置、计算机装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710832133.9A CN107566889B (zh) | 2017-09-15 | 2017-09-15 | 音频流流速误差处理方法、装置、计算机装置及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107566889A CN107566889A (zh) | 2018-01-09 |
CN107566889B true CN107566889B (zh) | 2020-06-16 |
Family
ID=60981099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710832133.9A Active CN107566889B (zh) | 2017-09-15 | 2017-09-15 | 音频流流速误差处理方法、装置、计算机装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107566889B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108495177B (zh) * | 2018-03-30 | 2021-07-13 | 北京世纪好未来教育科技有限公司 | 一种音频变速处理方法及装置 |
CN110933516B (zh) * | 2018-09-19 | 2022-06-10 | 华为技术有限公司 | 多媒体直播方法、装置及设备 |
CN109905752B (zh) * | 2019-03-14 | 2021-06-08 | 海信视像科技股份有限公司 | 音频数据处理方法、装置、电子设备和存储介质 |
CN111031338B (zh) * | 2019-12-17 | 2021-09-28 | 杭州当虹科技股份有限公司 | 一种改善在线信源速率异常的方法 |
CN111131917B (zh) * | 2019-12-26 | 2021-12-28 | 国微集团(深圳)有限公司 | 音频频谱实时同步方法、播放装置 |
CN111654720B (zh) * | 2020-07-17 | 2023-08-25 | 腾讯科技(深圳)有限公司 | 视频编码方法、装置、设备及可读存储介质 |
CN114554277B (zh) * | 2020-11-24 | 2024-02-09 | 腾讯科技(深圳)有限公司 | 多媒体的处理方法、装置、服务器及计算机可读存储介质 |
CN114697303B (zh) * | 2022-03-16 | 2023-11-03 | 北京金山云网络技术有限公司 | 一种多媒体数据处理方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1980385A (zh) * | 2005-12-07 | 2007-06-13 | 中国科学院自动化研究所 | 一种面向avs1.0的传输流离线复用方法 |
CN101212662A (zh) * | 2006-12-26 | 2008-07-02 | 中兴通讯股份有限公司 | Rtp混合器的构成方法 |
CN103888381A (zh) * | 2012-12-20 | 2014-06-25 | 杜比实验室特许公司 | 用于控制抖动缓冲器的装置和方法 |
CN106686445A (zh) * | 2015-11-05 | 2017-05-17 | 北京中广上洋科技股份有限公司 | 对多媒体文件进行按需跳转的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8660191B2 (en) * | 2009-10-22 | 2014-02-25 | Jason N. Wang | Software video decoder display buffer underflow prediction and recovery |
-
2017
- 2017-09-15 CN CN201710832133.9A patent/CN107566889B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1980385A (zh) * | 2005-12-07 | 2007-06-13 | 中国科学院自动化研究所 | 一种面向avs1.0的传输流离线复用方法 |
CN101212662A (zh) * | 2006-12-26 | 2008-07-02 | 中兴通讯股份有限公司 | Rtp混合器的构成方法 |
CN103888381A (zh) * | 2012-12-20 | 2014-06-25 | 杜比实验室特许公司 | 用于控制抖动缓冲器的装置和方法 |
CN106686445A (zh) * | 2015-11-05 | 2017-05-17 | 北京中广上洋科技股份有限公司 | 对多媒体文件进行按需跳转的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107566889A (zh) | 2018-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107566889B (zh) | 音频流流速误差处理方法、装置、计算机装置及计算机可读存储介质 | |
CN107566890B (zh) | 处理音频流播放异常的方法、装置、计算机装置及计算机可读存储介质 | |
CN105916058B (zh) | 一种流媒体缓冲播放方法、装置及显示设备 | |
JP7100175B2 (ja) | 送信方法及び送信装置 | |
CN106612452B (zh) | 机顶盒音视频同步的方法及装置 | |
CN113225598B (zh) | 移动端音视频同步的方法、装置、设备及存储介质 | |
WO2017107516A1 (zh) | 网络视频播放方法及装置 | |
US20090201998A1 (en) | Time-stamp addition apparatus, time-stamp addition method and time-stamp addition program | |
US20180295391A1 (en) | Multiplexing apparatus, receiving apparatus, multiplexing method, and delay adjustment method | |
CN107371053B (zh) | 音频视频流对比分析方法及装置 | |
US20080056666A1 (en) | Receiver and information processing method | |
CN109040818B (zh) | 直播时的音视频同步方法、存储介质、电子设备及系统 | |
CN103581730A (zh) | 在数字机顶盒上实现音视频同步的方法 | |
JP5041844B2 (ja) | Pcr補正回路 | |
JP2018182677A (ja) | 情報処理装置、情報処理方法、プログラム、および記録媒体製造方法 | |
JP6957186B2 (ja) | 情報処理装置、情報処理方法、プログラム、および記録媒体製造方法 | |
CN110753259B (zh) | 视频数据的处理方法、装置、电子设备及计算机可读介质 | |
US9420278B2 (en) | Audiovisual content generation method for multistage high-speed reproduction | |
JP5063944B2 (ja) | 録画機能付デジタル放送受信機 | |
US8331459B2 (en) | Method and apparatus for smooth digital media playback | |
CN105451100A (zh) | 一种播放视频流的方法及装置 | |
CN113630643A (zh) | 媒体流收录方法、装置及计算机存储介质、电子设备 | |
JP4764707B2 (ja) | 番組単位分離装置、及び番組単位分離プログラム | |
US7885297B2 (en) | Synchronization devices and methods | |
CN111131868B (zh) | 基于播放器的视频录制方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 22A, Guoshi building, 1801 Shahe West Road, high tech Zone, Yuehai street, Nanshan District, Shenzhen City, Guangdong Province Patentee after: GUOWEI GROUP (SHENZHEN) Co.,Ltd. Address before: 518000 Guangdong city of Shenzhen province Nanshan District high tech Industrial Park in the Southern District high SSMEC R & D Building 1 floor 2 floor west part Patentee before: SHENZHEN STATE MICRO TECHNOLOGY Co.,Ltd. |
|
CP03 | Change of name, title or address |