一种音视频同步和同步播放的方法及设备与流程

文档序号:13717429阅读:140来源:国知局
技术领域本发明涉及信号传输领域,特别涉及一种音视频同步和同步播放的方法及设备。

背景技术:
随着信息技术的飞速发展,网络摄像头、网络电视等多媒体技术的应用也越来越广泛,流媒体播放逐渐成为热点。在实时流媒体传输过程中,流媒体音视频同步播放,已成为业内人士所共同关心的问题之一。目前,在实时流媒体同步播放过程中,网络延迟和丢包是实时流媒体同步播放最主要的不利因素。现有技术中,在音视频传输时对音视频的数据包添加时间戳,这种在数据包添加时间戳的方法,有效解决了因网络延迟造成的音视频不同步的问题,但是,没有有效解决在音视频传输过程中,因为网络丢包造成的音视频数据不同步的问题。综上所述,目前,现有技术无法解决因网络问题造成的音视频播放不同步的问题。

技术实现要素:
本发明提供一种音视频同步和同步播放的方法及设备,用以解决现有技术中存在的因网络问题造成的音视频播放不同步的问题。基于上述问题,本发明实施例提供的一种音视频同步的方法,包括:针对单位时间内采集到的音视频数据,将所述音视频数据中的视频数据分为N个视频数据包,并分别对N个视频数据包进行标记;以及将所述音视频数据中的音频数据分为M个音频数据包,并分别对M个音频数据包进行标记;其中,M、N均为大于1的整数;将标记后的视频数据和标记后的音频数据通过不同的发送通道同时发送,以使接收端根据视频标记信息,在确定收到的单位时间内的所述视频数据包数量不等于N时,调整接收到的每个视频数据包的播放时长,以及根据音频标记信息,在确定收到的单位时间内的音频数据包不等于M时,调整所述音频数据中的音频数据包个数。由于本发明实施例对单位时间内采集到的视频数据分为多个数据包并分别标记,以及对单位时间内采集到的音频数据分为多个数据包并分别进行标记,将标记后的视频数据和音频数据通过不同的发送通道同时发送出去,使接收端根据发送前将视频数据分成的视频数据包个数,确定视频数据不完整时,调整每个视频数据包的播放时长;同时,使接收端根据发送前将音频数据分成的音频数据包个数,判断接收到音频数据是否为单位时间全部的音频数据,在确定音频数据不完整时,调整音频数据中的音频数据。若在一个单位时间内存在因网络问题造成丢包,接收端针对该单位时间的音视频数据包进行调整,保证单位时间结束时,单位时间的音频数据和视频数据都播放完成,确保不会影响下一个单位时间的音视频同步传输,从而避免在网络传输过程中由于网络问题造成的视频和音频不同步的问题,有效地保证音视频同步传输。本发明实施例提供的一种音视频同步播放的方法,包括:接收来自发送端的视频数据和音频数据,其中视频数据和音频数据是发送端将所述同一单位时间采集到的视频数据和音频数据分别分为N个视频数据包和M个音频数据包,并分别对N个视频数据包和M个音频数据包进行标记后发送的;其中,M、N均为大于1的整数;根据视频数据的标记信息和音频数据的标记信息,确定位于同一单位时间的视频数据和音频数据,并确定所述视频数据中的视频数据包个数Vn和所述音频数据中的音频数据包个数An;若所述视频数据中的视频数据包个数Vn不等于N,则调整所述每个视频数据包的播放时长,并根据所述调整后的播放时长,播放所述视频数据;若所述音频数据中的音频数据包个数An不等于M,则调整所述音频数据中的音频数据包个数,并播放调整后的音频数据。由于本发明实施例接收到来自发送端的视频数据和音频数据后,通过视频标记信息确定接收到的单位时间的视频数据包的个数与发送前将视频数据包分成的视频数据包的个数是否相同,判断接收到的单位时间的视频数据的完整性;通过音频标记信息确定接收到的单位时间的音频数据包的个数与发送前将音频数据包分成的音频数据包的个数是否相同,判断接收到的音频数据的完整性,若该单位时间的视频数据不完整,则调整该单位时间视频数据的每个视频数据包的播放时长,若单位时间的音频数据不完整,则调整该单位时间的音频数据包的个数,从而保证该单位时间的视频数据和音频数据同时播放完成,进而实现音视频数据的同步传输。另一方面,本发明实施例提供的一种音视频同步的设备,包括:标记模块,用于针对单位时间内采集到的音视频数据,将所述音视频数据中的视频数据分为N个视频数据包,并分别对N个视频数据包进行标记;以及将所述音视频数据中的音频数据分为M个音频数据包,并分别对M个音频数据包进行标记;其中,M、N均为大于1的整数;发送模块,用于将标记后的视频数据和标记后的音频数据通过不同的发送通道同时发送,以使接收端根据视频标记信息,在确定收到的单位时间内的所述视频数据包数量不等于N时,调整接收到的每个视频数据包的播放时长,以及根据音频标记信息,在确定收到的单位时间内的音频数据包不等于M时,调整所述音频数据中的音频数据包个数。本发明实施例提供的一种音视频同步播放的设备,包括:接收模块,用于接收来自发送端的视频数据和音频数据,其中视频数据和音频数据是发送端将所述同一单位时间采集到的视频数据和音频数据分别分为N个视频数据包和M个音频数据包,并分别对每个视频数据包和音频数据包进行标记后发送的;其中,M、N均为大于1的整数;确定模块,用于根据视频数据的标记信息和音频数据的标记信息,确定位于同一单位时间的视频数据和音频数据,并确定所述视频数据中的视频数据包个数Vn和所述音频数据中的音频数据包个数An;控制模块,用于在所述视频数据中的视频数据包个数Vn不等于N时,调整所述每个视频数据包的播放时长,并根据所述调整后的播放时长,播放所述视频数据;在所述音频数据中的音频数据包个数An不等于M时,调整所述音频数据中的音频数据包个数,并播放调整后的音频数据。附图说明图1为本发明实施例提供的一种音视频同步的方法的流程图;图2为本发明实施例提供的一种音视频同步播放的方法的流程图;图3为本发明实施例接收端接收缓冲区的结构示意图;图4为本发明实施例提供的一种音视频同步的设备的结构示意图;图5为本发明实施例提供的一种音视频同步播放的设备的结构示意图。具体实施方式本发明实施例针对单位时间内采集到的音视频数据,将所述音视频数据中的视频数据分为N个视频数据包,并分别对N个视频数据包进行标记;以及将所述音视频数据中的音频数据分为M个音频数据包,并分别对M个音频数据包进行标记;其中,M、N均为大于1的整数;将标记后的视频数据和标记后的音频数据通过不同的发送通道同时发送,以使接收端根据视频标记信息,在确定收到的单位时间内的所述视频数据包数量不等于N时,调整接收到的每个视频数据包的播放时长,以及根据音频标记信息,在确定收到的单位时间内的音频数据包不等于M时,调整所述音频数据中的音频数据包个数。由于本发明实施例对单位时间内采集到的视频数据分为多个数据包并分别标记,以及对单位时间内采集到的音频数据分为多个数据包并分别进行标记,将标记后的视频数据和音频数据通过不同的发送通道同时发送出去,使接收端根据发送前将视频数据分成的视频数据包个数,确定视频数据不完整时,调整每个视频数据包的播放时长;同时,使接收端根据发送前将音频数据分成的音频数据包个数,判断接收到音频数据是否为单位时间全部的音频数据,在确定音频数据不完整时,调整音频数据中的音频数据。若在一个单位时间内存在因网络问题造成丢包,接收端针对该单位时间的音视频数据包进行调整,保证单位时间结束时,单位时间的音频数据和视频数据都播放完成,确保不会影响下一个单位时间的音视频同步传输,从而避免在网络传输过程中由于网络问题造成的视频和音频不同步的问题,有效地保证音视频同步传输。其中,网络传输过程中的网络问题包括网络丢包和网络延迟。下面结合说明书附图对本申请实施例作进一步详细描述。如图1所示,本发明实施例一种音视频同步传输的方法,包括:步骤101、针对单位时间内采集到的音视频数据,将所述音视频数据中的视频数据分为N个视频数据包,并分别对N个视频数据包进行标记;以及将所述音视频数据中的音频数据分为M个音频数据包,并分别对M个音频数据包进行标记;其中,M、N均为大于1的整数;步骤102、将标记后的视频数据和标记后的音频数据通过不同的发送通道同时发送,以使接收端根据视频标记信息,在确定收到的单位时间内的所述视频数据包数量不等于N时,调整接收到的每个视频数据包的播放时长,以及根据音频标记信息,在确定收到的单位时间内的音频数据包不等于M时,调整所述音频数据中的音频数据包个数。本发明实施例中发送端采用两个独立的发送通道,用于同步发送采集到的视频和音频,并且视频发送通道和音频发送通道的机制和流程是相同的,从而保证视频和音频的同步发送。可选的,M和N不相同。由于单位时间视频数据的数据大小远大于同一单位时间音频数据的数据大小,为了便于每个视频数据包的缓存,每一个视频数据包的数据大小不能过大,因此,在将单位时间的视频数据分为M个视频数据包,将音频数据分为N个音频数据包时,需要使M大于N。具体的,本发明实施例根据下列步骤对视频数据进行标记。1、将单位时间内的视频数据分为N个视频数据包;实施中,可选的,将单位时间内的视频数据等分为N个视频数据包,较佳地将一帧视频数据作为一个视频数据包。例如,单位时间为1s,并且该1s内的视频数据包括15帧,则将该1s内的视频数据等分为15个视频数据包,即每一帧的数据作为一个视频数据包。2、分别对每个视频数据包进行标记;可选的,根据时间顺序,将N个视频数据包分别添加视频头标记,并且每个视频数据包对应一个视频头标记;其中,第一个视频数据包的视频头标记与其它视频数据包的视频头标记不同。由于本发明实施例将N个视频数据包分别添加视频头标记,便于接收端通过视频头标记判断接收到的单位时间的视频数据包个数,从而准确确定接收到的视频数据的完整性。本发明实施例中,在为单位时间的N个视频数据包添加视频头标记时,需要为每一个视频数据包添加唯一一个视频头标记,并且第一个视频数据包的视频头标记为特殊的视频头标记。例如,单位时间为1s,1s的视频数据包括10帧,则将该1s的视频数据中每一帧作为一个视频数据包,等分为10个视频数据包,将第一个视频数据包标记为Th,剩余9个视频数据包的头标记可以相同,也可以不同;比如,剩余9个视频数据包均标记为Ti,或者剩余9个视频数据包依次标记为T1、T2、T3、T4、T5、T6、T7、T8。或者,在对视频数据包进行标记时,根据单位时间的视频数据的播放顺序,还可以在每一个视频数据包添加时间戳。例如,针对1s内的视频数据,将1s的视频数据包括10帧,则将该1s的视频数据中每一帧作为一个视频数据包,等分为10个视频数据包,将第一个视频数据包添加时间戳为00:00:00,第二个视频数据包添加时间戳为00:00:06,第三个视频数据包添加时间戳为00:00:12,依次类推,第十个视频数据包添加的时间戳为00:00:54。需要说明的是,在发送端采集到的视频数据发送前,需要预先设置视频的发送频率,由于音频和视频是同步发送的,因此视频的发送频率与音频的发送频率是相同的,并将将相同的视频和音频的发送频率作为音视频同步发送的同步时间基准。具体的,本发明实施例根据下列步骤对音频数据进行标记。1、将单位时间内的音频数据分为M个音频数据包;实施中,可选的,将单位时间内的音频数据等分为M个音频数据包。例如,单位时间为1s,将1s内的音频数据等分为10个音频数据包,即每0.1s的音频数据作为一个音频数据包。2、分别对每个音频数据包进行标记;可选的,将M个音频数据包添加相同或不同的音频头标记,其中每个音频数据包对应一个音频头标记。由于本发明实施例将M个音频数据包添音频头标记,便于接收端通过音频头标记判断接收到的单位时间的音频数据包个数,从而准确确定接收到的音频数据的完整性。本发明实施例中,在为单位时间的M个音频数据包添加音频头标记时,需要为每一个音频数据包添加唯一一个音频头标记,并且这M个音频头标记可以为相同或不同的音频头标记。例如,单位时间为1s,将1s内的音频数据等分为10个音频数据包,为10个音频数据包添加音频头标记依次为Tm0、Tm1、Tm2、Tm3、Tm4、Tm5、Tm6、Tm7、Tm8、Tm9,或者,为10个音频数据包添加音频头标记均为Tm。或者,在对音数据包进行标记时,根据单位时间的视频数据的播放顺序,还可以在每一个音频数据包添加时间戳。例如,针对1s内的音频数据,将1s内的音频数据等分为10个音频数据包,将第一个音频数据包添加时间戳为00:00:00,第二个音频数据包添加时间戳为00:00:06,第三个音频数据包添加时间戳为00:00:12,依次类推,第十个音频数据包添加的时间戳为00:00:54。实施中,对于同一单位时间的视频数据添加的视频头标记和音频数据添加的音频头标记为不同类型的头标记,以便于接收端根据标记信息判断视频数据和音频数据是否完整。需要说明的是,在发送端采集到的音频数据发送前,需要预先设置音频的发送频率,由于音频和视频是同步发送的,因此音频的发送频率与视频的发送频率是相同的,并将相同的视频和音频的发送频率作为音视频同步发送的同步时间基准。本发明实施例在将采集到的单位时间的视频数据添加到视频发送缓冲区,以及将音频数据添加到音频发送缓冲区之前,还需要做如下判断。可选的,在满足条件一时,将所述单位时间内采集到的音视频数据中的视频数据添加到视频发送缓冲区中,以及将所述音视频数据中的音频数据添加到音频发送缓冲区中;在不满足条件一时,丢弃所述单位时间内采集到的音视频数据;其中条件一为:视频发送缓冲区中的待发送视频数据量不大于第一阈值,并且所述音频发送缓冲区中的待发送音频数据量不大于第二阈值。本发明实施例在将采集到的单位时间的视频数据添加到视频发送缓冲区,以及将音频数据添加到音频发送缓冲区之前,判断发送缓冲区中视频数据量是否大于第一阈值,以及判断音频发送缓冲区中的音频数据量是否大于第二阈值。在视频发送缓冲区中的待发送视频数据量不大于第一阈值,并且音频发送缓冲区中的待发送音频数据量不大于第二阈值时,说明网络畅通,能够继续缓存音视频数据;若视频发送缓冲区中视频数据量大于第一阈值,则确定该单位时间的视频数据无法添加到视频发送缓冲区中;或音频发送缓冲区中的音频数据量大于第二阈值,则确定该单位时间的音频数据无法添加到音频发送缓冲区中,或者,视频发送缓冲区中视频数据量大于第一阈值并且音频发送缓冲区中的音频数据量大于第二阈值,则确定单位时间的视频数据无法添加到视频发送缓冲区中,以及音频数据无法添加到音频发送缓冲区中,为了保证视频和音频的同步传输,在视频和音频其中一个无法添加时,则丢弃该单位时间的视频数据和音频数据,从而避免因网络拥堵造成的丢包,进而保证音视频数据的同步发送。其中,第一阈值和第二阈值为用户根据单位时间的视频数据量和音频数据量预先设定的。比如,单位时间为1s时,若视频发送缓冲区最多可以添加3s的视频数据,并且1s的视频数据量为A,音频发送缓冲区最多可以添加3s的音频数据,并且1s的音频数据量为B,则设定第一阈值为2A,第二阈值为2B。在T0时刻,将采集到的1s的视频数据添加到视频发送缓冲区,以及将该1s的音频数据添加到音频发送缓冲区时,由于网络传输中会出现网络拥堵,造成之前的视频和音频数据没有发送出去,并且在确定视频发送缓冲区中的视频数据量大于2A,并且确定音频发送缓冲区中的音频数据量大于2B,则丢弃从T0时刻开始的1s的视频数据和音频数据。如图2所示,本发明实施例还提供一种音视频同步播放的方法,包括:步骤201、接收来自发送端的视频数据和音频数据,其中视频数据和音频数据是发送端将所述同一单位时间采集到的视频数据和音频数据分别分为N个视频数据包和M个音频数据包,并分别对N个视频数据包和M个音频数据包进行标记后发送的;其中,M、N均为大于1的整数;步骤202、根据视频数据的标记信息和音频数据的标记信息,确定位于同一单位时间的视频数据和音频数据,并确定所述视频数据中的视频数据包个数Vn和所述音频数据中的音频数据包个数An;步骤203、若所述视频数据中的视频数据包个数Vn不等于N,则调整所述每个视频数据包的播放时长,并根据所述调整后的播放时长,播放所述视频数据;若所述音频数据中的音频数据包个数An不等于M,则调整所述音频数据中的音频数据包个数,并播放调整后的音频数据。由于本发明实施例接收到来自发送端的视频数据和音频数据后,通过视频标记信息确定接收到的单位时间的视频数据包的个数与发送前将视频数据包分成的视频数据包的个数是否相同,判断接收到的单位时间的视频数据的完整性;通过音频标记信息确定接收到的单位时间的音频数据包的个数与发送前将音频数据包分成的音频数据包的个数是否相同,判断接收到的音频数据的完整性,若该单位时间的视频数据不完整,则调整该单位时间视频数据的每个视频数据包的播放时长,若单位时间的音频数据不完整,则调整该单位时间的音频数据包的个数,从而保证该单位时间的视频数据和音频数据同时播放完成,进而实现音视频数据的同步传输。本发明实施例中接收端接收到的视频数据为标记后的视频数据,接收端接收到的音频数据为标记后的音频数据。其中,针对单位时间的音视频数据,本发明实施例采用下列方式对视频数据进行标记。将单位时间的视频数据分为N个视频数据包,根据时间顺序,将N个视频数据包分别添加视频头标记,并且每个视频数据包对应一个视频头标记;其中,第一个视频数据包的视频头标记与其它视频数据包的视频头标记不同。针对单位时间的音视频数据,本发明实施例采用下列方式对音频数据进行标记。将单位时间的音频数据分为M个音频数据包,根据时间顺序,将N个音频数据包分别添加音频头标记,其中,N个音频头标记可以相同或不同。在接收端,设置一个接收缓冲区,如图3所示,该接收缓冲区又分为五个部分,分别为视频单包数据接收区301、音频单包数据接收区302、音视频线性队列缓冲区303、视频处理缓冲区304和音频处理缓冲区305。其中,视频单包数据接收区301用于接收发送端从视频发送通道发送的单包视频数据;音频单包数据接收区302用于接收发送端从音频发送通道发送的单包音频数据;音视频线性队列缓冲区303用于将接收到的视频数据包和音频数据包按照时间顺序线性队列存储,并根据视频标记信息和音频标记信息确定同一单位时间的视频数据和音频数据;视频处理缓冲区304用于存储音视频线性队列缓冲区303确定的同一单位时间的视频数据,并标记该视频数据队列;音频处理缓冲区305用于存储与视频处理缓冲区304对应的同一单位时间的音频数据,并标记该音频数据队列。下面具体介绍音视频数据的接收和播放方法。1、在接收端接收到采用两个不同通道同步发送的视频数据和音频数据时,将视频数据和音频数据分开存放,将接收到的每个视频数据包存放在视频单包数据接收区301,将接收到的每个音频数据包存放在音频单包数据接收区302;2、根据时间顺序,将视频单包数据接收区301接收的视频数据包,以及将音频单包数据接收区302接收的音频数据包按照时间顺序依次存储于音视频线性队列缓冲区303;3、根据视频标记信息和音频数据的标记信息,确定音视频线性队列缓冲区303中位于同一单位时间的视频数据和音频数据;4、读取音视频线性队列缓冲区303中位于同一单位时间的视频数据,存放于视频处理缓冲区304中,并标记为Fv;读取音视频线性队列缓冲区303中位于同一单位时间的音频数据,存放于音频处理缓冲区305中,并标记为Fa;5、确定视频处理缓冲区304中视频数据的视频数据包个数Vn,判断Vn是否等于N,若不是,则调整该单位时间的每个视频数据包的播放时长,若是,则该单位时间的视频数据完整,无需调整;确定音频处理缓冲区305中音频数据的音频数据包个数An,判断An是否等于M,若不是,则调整单位时间的音频数据包个数,若是,则该单位时间的音频数据完整,无需调整。6、根据视频处理缓冲区304中每个视频数据包的播放时长,以及音频处理缓冲区305中每个音频数据包的播放时长,同时播放视频数据和音频数据。根据时间顺序,将所述视频数据和所述音频数据存储于接收缓冲区后,根据下列方式确定位于同一单位时间的视频数据和音频数据:根据所述视频标记信息,获取所述接收缓冲区中有特殊视频头标记的相邻两个视频数据之间的视频数据包,以及位于前面的有特殊视频头标记的视频数据包,并存储于视频处理缓冲区,作为一个单位时间的视频数据;根据所述音频标记信息,获取有特殊视频头标记的相邻两个视频数据之间的音频数据包,并存储于音频处理缓冲区,作为一个单位时间的音频数据;并且将所述一个单位时间的视频数据和所述一个单位时间的音频数据作为同一单位时间的视频数据和音频数据。由于本发明实施例提供了一种根据视频标记信息和音频标记信息,确定同一单位时间的视频数据和音频数据的方法,从而准确确定同一单位时间的视频数据和音频数据,进而得到单位时间的视频数据包个数和音频数据包个数,并确定网络丢包情况,进行相应的调整,从而避免因网络丢包造成的音视频播放不同步。本发明实施例将接收到的视频数据和音频数据共同存储于音视频线性队列缓冲区303之后,根据视频标记信息,确定音视频线性队列缓冲区303中相邻两个有特殊视频头标记的视频数据包的位置,则将位于这两个有特殊视频头标记的视频数据包之间的视频数据包,以及位于前面的有特殊视频头标记的视频数据包,作为单位时间的视频数据,并存储于视频处理缓冲区304中,标记为Fv。将位于这两个有特殊视频头标记的视频数据包之间的音频数据包,作为单位时间的音频数据,并存储于音频处理缓冲区305中,标记为Fa。需要说明的是,存储于视频处理缓冲区304中的单位时间的视频数据,与存储于音频处理缓冲区305中的单位时间的音频数据,为同一单位时间的视频数据和音频数据。比如,单位时间为1s时,1s的视频数据为10帧,在对1s的视频数据和音频数据进行标记时,将1s的视频数据分为10个视频数据包,每个视频数据包为一帧的视频数据,并将这10个视频数据包依次标记为Th、T1、T2、T3、T4、T5、T6、T7、T8、T9;将1s的音频数据分为8个音频数据包,均标记为Tm;根据时间顺序,将视频数据包和音频数据包存储于音视频线性队列缓冲区303时,存储顺序为Th、Tm、T1、Tm、T2、Tm、T3、Tm、T4、T5、Tm、T6、Tm、T7、Tm、T8、Tm、T9、Th、Tm、T1、Tm、T2……确定音视频线性队列缓冲区303中相邻两个Th头标记的视频数据包的位置,将两个相邻的Th头标记之间的视频数据包,以及前面的Th头标记的视频数据包作为1s的视频数据,标记为Fv,则Fv视频数据队列为:Th、T1、T2、T3、T4、T5、T6、T7、T8、T9,并存储于视频处理缓冲区304中;将两个相邻的Th头标记之间的音频数据包作为1s的音频数据,标记为Fa,则Fa视频数据队列为:Tm、Tm、Tm、Tm、Tm、Tm、Tm、Tm,并存储于音频处理缓冲区305中。其中,视频处理缓冲区304中标记为Fv的视频数据,与音频处理缓冲区305中标记为Fa的音频数据为同一个1s的数据。本发明实施例在确定同一单位时间的视频数据和音频数据之后,还需判断存储于视频处理缓冲区304中的视频数据是否完整,以及判断存储于音频处理缓冲区305中的音频数据是否完整。本发明实施例在判断视频处理缓冲区304中视频数据的视频数据包个数Vn是否等于N时,Vn不等于N又包括下面两种情形。一、确定Vn大于N。网络传输过程中,在网络状况较差时往往会出现丢包现象,若在视频数据传输过程中,带有特殊头标记的视频数据包丢失,则在根据相邻的两个有特殊头标记的视频数据包确定单位时间的视频数据时,会造成确定的单位时间的视频数据包增加,即确定单位时间的视频数据的视频数据包Vn大于N。比如,单位时间为1s时,1s的视频数据为5帧,将1s的视频数据分为5个数据包,并以此标记为Th、T1、T2、T3、T4;1s的音频数据分为3个数据包,均标记为Tm,若在传输过程中,带有特殊头标记的视频数据包丢失,根据时间顺序,在音视频线性队列缓冲区303存放的视频数据包和音频数据包依次为:Th、Tm、T1、Tm、T2、T3、Tm、T4、Tm、T1、Tm、T2、T3、Tm、T4、Th、Tm、T1、Tm、T2、T3、Tm、T4……则在确定单位时间的视频数据时,相邻两个带有特殊头标记的视频数据包之间的视频数据包为Th、T1、T2、T3、T4、T1、T2、T3、T4,即确定单位时间的视频数据的视频数据包Vn=9。二、确定Vn小于N。网络传输过程中,在网络状况较差时往往会出现丢包现象,若在视频数据传输过程中,带有非特殊头标记的视频数据包丢失,则在根据相邻的两个有特殊头标记的视频数据包确定单位时间的视频数据时,会造成确定的单位时间的视频数据包减小,即确定单位时间的视频数据的视频数据包Vn小于N。比如,单位时间为1s时,1s的视频数据为5帧,将1s的视频数据分为5个数据包,并以此标记为Th、T1、T2、T3、T4;1s的音频数据分为3个数据包,均标记为Tm,若在传输过程中,带有非特殊头标记的视频数据包丢失,根据时间顺序,在音视频线性队列缓冲区303存放的视频数据包和音频数据包依次为:Th、Tm、T1、Tm、T3、Tm、T4、Th、Tm、T1、Tm、T2……则在确定单位时间的视频数据时,相邻两个带有特殊头标记的视频数据包之间的视频数据包为Th、T1、T3、T4,即确定单位时间的视频数据的视频数据包Vn=4。本发明实施例在确定接收到的单位时间视频数据的视频数据包个数Vn不等于N时,需要调整每个视频数据包的播放时长Tn,并根据下列方式进行调整。可选的,将单位时间除以视频数据中的视频数据包个数Vn,得到的商值作为每个视频数据包的播放时长。本发明实施例在确定接收到的单位时间视频数据的视频数据包个数Vn不等于N时,调整每个视频数据包的播放时长Tn=T/Vn,其中,T为单位时间。由于本发明实施例提供了调整每个视频数据包的播放时长的方法,从而灵活控制每个视频数据包的播放时长。需要说明的是,在发送端确定将单位时间的视频数据分为N个数据包后,计算得到该单位时间的视频数据的每个视频数据包的播放时长Tn=T/N,并将Tn的值预先设定,若接收端确定接收到的单位时间视频数据的视频数据包个数Vn等于N时,则无需调整每个视频数据包的播放时长,直接采用预先设定的Tn的值播放该单位时间的视频数据。比如,单位时间为1s时,1s的视频数据为10帧,在对1s的视频数据和音频数据进行标记时,将1s的视频数据分为10个视频数据包,则预先设定该单位时间的每个视频数据包的播放时长Tn=0.1s,若接收端接收到的该单位时间的数据包个数Vn=8时,则调整该单位时间的每个视频数据包的播放时长Tn=1/8=0.125s,并根据Tn=0.125s播放该单位时间的视频数据。本发明实施例在判断音频处理缓冲区305中音频数据的音频数据包个数An是否等于M时,An不等于M又包括下面两种情形。一、确定An大于M。网络传输过程中,在网络状况较差时往往会出现丢包现象,若在视频数据传输过程中,带有特殊头标记的视频数据包丢失,则在根据相邻的两个有特殊头标记的视频数据包确定单位时间的音频数据时,会造成确定的单位时间的音频数据包增加,即确定单位时间的视频数据的视频数据包An大于M。比如,单位时间为1s时,1s的视频数据为5帧,将1s的视频数据分为5个数据包,并以此标记为Th、T1、T2、T3、T4;1s的音频数据分为3个数据包,均标记为Tm,若在传输过程中,带有特殊头标记的视频数据包丢失,根据时间顺序,在音视频线性队列缓冲区303存放的视频数据包和音频数据包依次为:Th、Tm、T1、Tm、T2、T3、Tm、T4、Tm、T1、Tm、T2、T3、Tm、T4、Th、Tm、T1、Tm、T2、T3、Tm、T4……则在确定单位时间的视频数据时,相邻两个带有特殊头标记的视频数据包之间的视频数据包为Tm、Tm、Tm、Tm、Tm、Tm,即确定单位时间的视频数据的视频数据包An=6。二、确定An小于M。网络传输过程中,在网络状况较差时往往会出现丢包现象,若在音频数据传输过程中,部分音频数据包丢失,则在根据相邻的两个有特殊头标记的视频数据包确定单位时间的音频数据时,会造成确定的单位时间的音频数据包减小,即确定单位时间的音频数据的音频数据包An小于M。比如,单位时间为1s时,1s的视频数据为5帧,将1s的视频数据分为5个数据包,并以此标记为Th、T1、T2、T3、T4;1s的音频数据分为3个数据包,均标记为Tm,若在传输过程中,一个音频数据包丢失,根据时间顺序,在音视频线性队列缓冲区303存放的视频数据包和音频数据包依次为:Th、Tm、T1、Tm、T2、T3、T4、Th、Tm、T1、Tm、T2……则在确定单位时间的音频数据时,相邻两个带有特殊头标记的视频数据包之间的音频数据包为Tm、Tm,即确定单位时间的音频数据的音频数据包An=2。本发明实施例在确定接收到的单位时间音频数据的音频数据包个数An不等于M时,需要调整该单位时间的音频数据包的个数An,并根据下列方式进行调整。可选的,若An>M,则丢弃所述音频数据中的An-M个音频数据包;若An<M,则从备选音频数据包中选取M-An个音频数据包,插入所述音频数据中。由于本发明实施例提供了调整音频数据中的音频数据包个数的方法,从而有效保证单位时间的音频数据包个数不变。本发明实施例在音频处理缓冲区预先存放多个备选音频数据包,该备选音频数据包的大小与发送端将音频数据分成的M个音频数据包的大小相同,并且该备选音频数据为实现录制的环境声音数据,并非简单的全零或全一的音频数据。本发明实施例在确定接收到的单位时间的音频数据包的个数An>M,则随机丢弃An-M个音频数据包;在确定接收到的单位时间的音频数据包的个数An<M,则选取M-An个备选音频数据包随机添加到单位时间的音频数据中。从而保证单位时间的音频数据包的个数始终为M个。并根据预先设定的单位时间的每个音频数据包的播放时长Ta播放音频。需要说明的是,在发送端确定将单位时间的音频数据分为M个数据包后,计算得到该单位时间的音频数据的每个音频数据包的播放时长Ta=T/M,并将Tn的值预先设定。基于同一发明构思,本申请实施例中还提供了一种音视频同步的设备,由于该设备解决问题的原理与本申请实施例音视频同步的方法相似,因此该设备的实施可以参见方法的实施,重复之处不再赘述。如图4所示,本发明实施例一种音视频同步的设备,包括:标记模块401,用于针对单位时间内采集到的音视频数据,将所述音视频数据中的视频数据分为N个视频数据包,并分别对N个视频数据包进行标记;以及将所述音视频数据中的音频数据分为M个音频数据包,并分别对M个音频数据包进行标记;其中,M、N均为大于1的整数;发送模块402,用于将标记后的视频数据和标记后的音频数据通过不同的发送通道同时发送,以使接收端根据视频标记信息判断收到的视频数据是否完整,以及根据音频标记信息判断收到的音频数据是否完整。可选的,所述标记模块401,还用于:在满足条件一时,将所述单位时间内采集到的音视频数据中的视频数据添加到视频发送缓冲区中,以及将所述音视频数据中的音频数据添加到音频发送缓冲区中;在不满足条件一时,丢弃所述单位时间内采集到的音视频数据;所述条件一为:视频发送缓冲区中的待发送视频数据量不大于第一阈值,并且所述音频发送缓冲区中的待发送音频数据量不大于第二阈值。可选的,所述标记模块401,具体用于:根据时间顺序,将N个视频数据包分别添加视频头标记,并且每个视频数据包对应一个视频头标记;其中,第一个视频数据包的视频头标记与其它视频数据包的视频头标记不同;将M个音频数据包添加相同或不同的音频头标记,其中每个音频数据包对应一个音频头标记。如图5所示,本发明实施例提供的一种音视频同步播放的设备,包括:接收模块501,用于接收来自发送端的视频数据和音频数据,其中视频数据和音频数据是发送端将所述同一单位时间采集到的视频数据和音频数据分别分为N个视频数据包和M个音频数据包,并分别对N个视频数据包和M个音频数据包进行标记后发送的;其中,M、N均为大于1的整数;确定模块502,用于根据视频数据的标记信息和音频数据的标记信息,确定位于同一单位时间的视频数据和音频数据,并确定所述视频数据中的视频数据包个数Vn和所述音频数据中的音频数据包个数An;控制模块503,用于在所述视频数据中的视频数据包个数Vn不等于N时,调整所述每个视频数据包的播放时长,并根据所述调整后的播放时长,播放所述视频数据;在所述音频数据中的音频数据包个数An不等于M时,调整所述音频数据中的音频数据包个数,并播放调整后的音频数据。可选的,所述确定模块502,具体用于:根据时间顺序,将所述视频数据和所述音频数据存储于接收缓冲区中;根据所述视频标记信息,获取所述接收缓冲区中有特殊视频头标记的相邻两个视频数据之间的视频数据包,以及位于前面的有特殊视频头标记的视频数据包,并存储于视频处理缓冲区,作为一个单位时间的视频数据;根据所述音频标记信息,获取有特殊视频头标记的相邻两个视频数据之间的音频数据包,并存储于音频处理缓冲区,作为一个单位时间的音频数据;并且将所述一个单位时间的视频数据和所述一个单位时间的音频数据作为同一单位时间的视频数据和音频数据。可选的,所述控制模块503,具体用于:将单位时间除以视频数据中的视频数据包个数Vn,得到的商值作为每个视频数据包的播放时长;在An>M时,丢弃所述音频数据中的An-M个音频数据包;在An<M时,从备选音频数据包中选取M-An个音频数据包,插入所述音频数据中。以上参照示出根据本申请实施例的方法、装置(系统)和/或计算机程序产品的框图和/或流程图描述本申请。应理解,可以通过计算机程序指令来实现框图和/或流程图示图的一个块以及框图和/或流程图示图的块的组合。可以将这些计算机程序指令提供给通用计算机、专用计算机的处理器和/或其它可编程数据处理装置,以产生机器,使得经由计算机处理器和/或其它可编程数据处理装置执行的指令创建用于实现框图和/或流程图块中所指定的功能/动作的方法。相应地,还可以用硬件和/或软件(包括固件、驻留软件、微码等)来实施本申请。更进一步地,本申请可以采取计算机可使用或计算机可读存储介质上的计算机程序产品的形式,其具有在介质中实现的计算机可使用或计算机可读程序代码,以由指令执行系统来使用或结合指令执行系统而使用。在本申请上下文中,计算机可使用或计算机可读介质可以是任意介质,其可以包含、存储、通信、传输、或传送程序,以由指令执行系统、装置或设备使用,或结合指令执行系统、装置或设备使用。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1