音视频同步方法和装置的制造方法
【技术领域】
[0001]本发明涉及网络信息传输领域,特别是涉及一种音视频同步方法和装置。
【背景技术】
[0002]随着网络技术的发展,用户通过网络进行在线交互活动频繁,例如进行在线视频会议或在线视频聊天,需要采集会话用户的图像数据和声音数据,即音视频数据传输给其他用户,并在其他用户处播放该采集的音视频数据。
[0003]传统的音视频采集传输方式是在发送端对音视频进行合流,然后采用单一通道传输合流后的数据,并在接收端将合流后的数据分离播放,在发送端网络出现卡顿的时候,在接收方播放的视频和声音将同时出现卡顿。
【发明内容】
[0004]基于此,有必要针对传统的音视频播放中发送端网络出现卡顿引起接收方播放的视频和音频同时出现卡顿的问题,提供一种音视频同步方法和装置,能避免视频和音频同时出现卡顿,提高了音频播放的流畅性。
[0005]一种音视频同步方法,包括以下步骤:
[0006]对分别接收的音频数据包和视频数据包进行解码得到音频数据的时间戳和视频数据的时间戳;
[0007]获取当前播放视频数据的时间戳和当前播放音频数据的时间戳;
[0008]根据所述当前播放视频数据的时间戳和当前播放音频数据的时间戳计算当前音视频播放的时间差;
[0009]根据所述当前音视频播放的时间差获取调节速率;
[0010]根据所述调节速率调节所述视频播放速率或控制音频停止播放,以使所述音频数据和视频数据播放同步。
[0011]一种音视频同步装置,包括:
[0012]解码模块,用于对分别接收的音频数据包和视频数据包进行解码得到音频数据的时间戳和视频数据的时间戳;
[0013]时间戳获取模块,用于获取当前播放视频数据的时间戳和当前播放音频数据的时间戳;
[0014]时间差计算模块,用于根据所述当前播放视频数据的时间戳和当前播放音频数据的时间戳计算当前音视频播放的时间差;
[0015]调节速率获取模块,用于根据所述当前音视频播放的时间差获取调节速率;
[0016]调节模块,用于根据所述调节速率调节所述视频播放速率或控制音频停止播放,以使所述音频数据和视频数据播放同步。
[0017]上述音视频同步方法和装置,通过根据当前播放视频数据的时间戳和音频数据的时间戳计算当前音视频播放的时间差,并根据当前音视频播放的时间差获取调节速率,根据调节速率调节视频播放速率或控制音频停止播放,使得音频数据和视频数据播放同步,在发送端网络出现卡顿时,并不会引起接收方播放的视频和音频同时出现卡顿,提高了音频播放的流畅性,尤其应用于在音视频分开采集、编码和传输场景下的视频直播中音视频同步,即便在发送端网络出现拥塞和丢包的场景下,同步也会在网络正常之后恢复,并且声音播放的流畅性更易于保证。
【附图说明】
[0018]图1为一个实施例中音视频同步方法和装置的应用环境示意图;
[0019]图2为一个实施例中音视频同步方法的流程图;
[0020]图3为另一个实施例中音视频同步方法的流程图;
[0021]图4为一个实施例中音视频同步装置的结构示意图;
[0022]图5为另一个实施例中音视频同步装置的结构不意图;
[0023]图6为另一个实施例中音视频同步装置的结构不意图。
【具体实施方式】
[0024]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0025]可以理解,本发明所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本发明的范围的情况下,可以将第一终端称为第二终端,且类似地,可将第二终端称为第一终端。第一终端和第二终端两者都是终端,但其不是同一终端。
[0026]图1为一个实施例中音视频同步方法和装置的应用环境示意图。如图1所示,该应用环境包括第一终端110、音频服务器120、视频服务器130和第二终端140。其中,第一终端110和第二终端140均可为台式计算机、笔记本电脑、平板电脑、个人数字助理、智能手机等。第一终端110和第二终端140的数量可为一个或多个,在此不做限定,此处仅为了说明而举例。第一终端110作为音视频数据的发送端,第二终端140作为音视频数据的接收端。第一用户位于第一终端110上,第二用户位于第二终端140上。
[0027]第一终端110用于采集第一用户的视频数据及其对应的时间戳和音频数据及其对应的时间戳,并将采集的视频数据及其对应的时间戳编码并封装成视频数据包后发送给视频服务器130,以及将采集的音频数据及其对应的时间戳编码并封装成音频数据包后发送给音频服务器120。
[0028]音频服务器120将音频数据包发送给第二终端140,视频服务器130将视频数据包发送给第二终端140上的第二用户。
[0029]第二终端140接收到音频数据包和视频数据包后分别进行解码得到音频数据及其对应的时间戳和视频数据及其对应的时间戳,并根据当前播放的视频数据的时间戳和音频数据的时间戳计算音视频播放的时间差,并根据时间差计算调节速率,根据调节速率调节视频数据的播放速率或控制音频数据停止播放,以使该音频数据和视频数据播放同步。
[0030]第二终端140通过调节视频数据的播放速率,使得视频数据和音频数据播放同步,在第一终端110上第一用户所处的网络出现拥堵和丢包的场景下,当网络恢复正常后,能及时的恢复视频数据和音频数据的播放同步,且提高了音频播放的流畅性。该音视频同步方法应用于音视频分离传输场景下的直播音视频同步,更能保证音视频数据播放的同步。
[0031]此外,在其他应用环境中,音频服务器120和视频服务器130可合并为一个服务器,但音频数据和视频数据分离传输。
[0032]图2为一个实施例中音视频同步方法的流程图。图2中的音视频同步方法应用于图1的应用环境中。如图2所示,一种音视频同步方法,包括以下步骤:
[0033]步骤202,对分别接收的音频数据包和视频数据包进行解码得到音频数据的时间戳和视频数据的时间戳。
[0034]具体的,接收的音频数据包和视频数据包是经过编码的,对接收的音频数据包进行解码得到音频数据及其对应的时间戳,对接收的视频数据包进行解码得到视频数据及其对应的时间戳。音频数据包解码会按照时间戳顺序进行解码。视频数据包解码后会重排视频帧的顺序,使其和最初采集顺序相对应。
[0035]步骤204,获取当前播放视频数据的时间戳和当前播放音频数据的时间戳。
[0036]具体的,当在播放视频数据时,获取当前播放视频数据的时间戳,并查询当前播放音频数据的时间戳。
[0037]步骤206,根据该当前播放视频数据的时间戳和当前播放音频数据的时间戳计算当前音视频播放的时间差。
[0038]具体的,将当前播放视频数据的时间戳和当前播放音频数据的时间戳求差值得到当前音频视频播放的时间差。
[0039]步骤208,根据该当前音视频播放的时间差获取调节速率。
[0040]在一个实施例中,该调节速率可为当前播放视频数据的时间戳与当前播放音频数据的时间戳之差的线性函数。
[0041]具体的,播放器的播放速率是由递交给渲染模块解码后图像数据的速率决定的。图像数据的速率取决于一个时间间隔TP,理想情况下是TP等于1000/平均帧率,若平均帧率为20帧/毫秒,则该TP为50毫秒。
[0042]当计算出音视频播放的时间差TC = TV-TA,其中,TA为音频数据的时间戳,TV为视频数据的时间戳。调节速率为当前播放视频数据的时间戳与当前播放音频数据的时间戳之差的线性函数,例如可为ACC = A+A*TC/1000,其中,ACC即为调节速率,A为一个基本值,可根据需要设置大小,例如,基本值可为5毫秒。在TC很小时,TC对ACC的影响比较小,当TC较大时,TC对ACC的影响比较大。
[0043]计算得到一个真实递交给渲染模块的时间间隔TR,TR = TC-ACC-TW,其中,Tff是其它处理带来的时间消耗(如取帧,帧数据解码等)。
[0044]ACC为正值时,说明视频数据播放比音频快,TR会小于TC-TW,视频数据播放会稍大于预定的帧率;ACC为负值时,说明视频数据播放比音频慢,TR会大于TC-TW,视频数据播放会小于预定的帧率。其中,预定的帧率是指预先设定的播放帧率。
[0045]步骤210,根据该调节速率调节该视频播放速率或控制音频停止播放,以使该音频数据和视频数据播放同步。
[0046]在一个实施例中,步骤210包括:该调节速率为当前播放视频数据的时间戳与当前播放音频数据的时间戳之差的线性函数;若调节速率为正