音频视频同步处理方法及装置
技术领域
本发明涉及数据处理方法及装置,尤其涉及一种音频视频同步处理方法及装置。
背景技术
通常为进行媒体播放,音频样本流和视频样本流这两路数据流分别输入音频编码器和视频编码器进行编码,得到音频编码数据和视频编码数据,然后把这两路编码数据发送给文件合成器进行文件格式合成。在这个过程中,音频视频不同步是困扰播放的一个主要问题,导致音频视频不同步的原因可能是音频样本流和视频样本流分别输入音频编码器和视频编码器之前,并没有进行交织,或者没有进行正确的交织,导致文件合成不正确,引起音频视频不同步。还有,编码后,由于编码器消耗样本与交织样本不同步,导致文件合成不正确,同样会引起音频视频播放不同步。
发明内容
本发明要解决的技术问题在于针对现有技术中交织不正确导致音频视频不同步的缺陷,提供一种音频视频同步处理方法及装置。
本发明解决其技术问题所采用的技术方案是:提供了一种音频视频同步处理方法,包括:
接收步骤,用于接收音频样本和视频样本;
编码步骤,用于分别对接收的所述音频样本和视频样本进行编码以形成编码后音频样本和编码后视频样本,并输出包括所述编码后音频样本和编码后视频样本的编码后音频视频队列;以及
文件合成步骤,用于将所述编码后音频样本和编码后视频样本合成文件以输出;
其中,所述编码步骤与所述文件合成步骤之间还包括编码后交织步骤,用于基于所述编码后视频样本的视频帧率对所述编码后音频样本和编码后视频样本进行交织以形成编码后交织队列供文件合成。
在依据本发明实施例的音频视频同步处理方法中,所述编码后交织步骤进一步包括:
分别采集所述编码后音频视频队列中的每一帧所述编码后音频样本和每一帧编码后视频样本消耗的字节数,以分别获得每一帧所述编码后音频样本的持续时长和每一帧所述编码后视频样本的持续时长;以及
基于每一帧所述编码后音频样本的持续时长和每一帧所述编码后视频样本的持续时长对所述编码后音频视频队列中的所述编码后音频样本和编码后视频样本进行交织以获得编码后交织队列,其中所述编码后交织队列中任一帧编码后视频样本的持续时长与其对应的一帧编码后音频样本的持续时长之差小于或等于预设阈值。
在依据本发明实施例的音频视频同步处理方法中,所述编码后交织步骤进一步包括:
当所述编码后音频视频队列中的任一帧编码后视频样本的持续时长与k帧编码后音频样本的持续时长之和的差小于或等于所述预设阈值时,其中k为大于或等于1的自然数,则编码后交织队列中该帧编码后视频样本对应的一帧编码后音频样本由所述编码后音频视频队列中该k帧编码后音频样本组成。
在依据本发明实施例的音频视频同步处理方法中,所述预设阈值为0.01秒。
在依据本发明实施例的音频视频同步处理方法中,所述编码后交织队列中任一帧编码后视频样本的持续时长与其对应的一帧编码后音频样本的持续时长相等。
在依据本发明实施例的音频视频同步处理方法中,所述接收步骤与所述编码步骤之间还包括编码前交织步骤,用于基于接收的所述视频样本的视频帧率对接收的所述音频样本和视频样本进行交织以形成编码前交织队列。
在依据本发明实施例的音频视频同步处理方法中,在所述编码前交织步骤中,按下列公式:
nBitA=nChannel×nSampleRate×nBit*(1/nFramerate)/8
计算所述编码前交织队列中任一帧视频样本对应的一帧音频样本内包含的字节数nBitA,其中,nChannel为所述音频样本的声道个数,nSamplerate为所述音频样本的采样率,nBit为每个所述音频样本的量化比特数,nFramerate为所述视频样本的视频帧率。
本发明还提供了一种音频视频同步处理装置,包括:
接收装置,用于接收音频样本和视频样本;
编码装置,用于分别对接收的所述音频样本和视频样本进行编码以形成编码后音频样本和编码后视频样本,并输出包括所述编码后音频样本和编码后视频样本的编码后音频视频队列;以及
文件合成装置,用于将所述编码后音频样本和编码后视频样本合成文件以输出;
其中,所述音频视频同步处理装置还包括编码后交织装置,用于基于所述编码后视频样本的视频帧率对所述编码后音频样本和编码后视频样本进行交织以形成编码后交织队列供文件合成。
在依据本发明实施例的音频视频同步处理装置中,所述编码后交织装置进一步用于:
分别采集所述编码后音频视频队列中的每一帧所述编码后音频样本和每一帧编码后视频样本消耗的字节数,以分别获得每一帧所述编码后音频样本的持续时长和每一帧所述编码后视频样本的持续时长;以及
基于每一帧所述编码后音频样本的持续时长和每一帧所述编码后视频样本的持续时长对所述编码后音频视频队列中的所述编码后音频样本和编码后视频样本进行交织以获得编码后交织队列,其中所述编码后交织队列中任一帧编码后视频样本的持续时长与其对应的一帧编码后音频样本的持续时长之差小于或等于预设阈值。
在依据本发明实施例的音频视频同步处理装置中,所述编码后交织装置进一步用于:
当所述编码后音频视频队列中的任一帧编码后视频样本的持续时长与k帧编码后音频样本的持续时长之和的差小于或等于所述预设阈值时,其中k为大于或等于1的自然数,则编码后交织队列中该帧编码后视频样本对应的一帧编码后音频样本由所述编码后音频视频队列中该k帧编码后音频样本组成。
本发明产生的有益效果是:通过在编码后,基于编码后的视频样本的视频帧率对编码后的视频样本和音频样本进行交织,从而有效地同步接收的音频和视频。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是依据本发明实施例的音频视频同步处理方法的流程图;
图2是依据本发明实施例的音频视频同步处理装置的逻辑框图;
图3是依据本发明实施例的编码前交织步骤的示意图;
图4是依据本发明实施例的编码后交织步骤的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
图1和2分别示出了依据本发明实施例的音频视频同步处理方法的流程图和音频视频同步处理装置的逻辑框图,结合图1和图2,下面将按步骤详细描述该音频视频同步处理方法。
S100、接收步骤,在该步骤中可通过接收装置100从音频源和视频源分别接收待播放媒体的音频样本110和视频样本120。
S200、编码前交织步骤,为了使播放的媒体文件中音频和视频保持同步,在该步骤中可采用编码前交织装置200对步骤S100中接收的音频样本110和视频样本120进行交织以形成编码前交织队列210。因为只有对音频和视频采用正确的交织才能确保播放的媒体文件中音频和视频同步,因此在本发明实施例中将基于视频样本120的视频帧率,采用编码前交织装置200对接收的音频样本110和视频样本120进行交织以形成编码前交织队列210,图3中示出了该编码前交织步骤的示意图。如图3所示,在编码前交织队列210中,视频样本帧Vi和音频样本帧Ai依次交替排列,其中,任一帧视频样本Vi均具有其对应的一帧音频样本Ai,具体而言,一帧视频样本V2具有其对应的一帧音频样本A2。
优选地,在该编码前交织步骤中,按下列公式:
nBitA=nChannel×nSampleRate×nBit*(1/nFramerate)/8 (1)
计算编码前交织队列210中任一帧视频样本Vi对应的一帧音频样本Ai内包含的字节数nBitA,其中,nChannel为音频样本110的声道个数,nSamplerate为音频样本110的采样率,nBit为每个音频样本110的量化比特数,nFramerate为视频样本120的视频帧率。举例而言,假设视频样本120的视频帧率nFramerate为30帧/秒,其它参数不考虑;音频样本110的参数为:声道nChannel为2声道,采样率nSamplerate为44100Hz;量化比特数nBit为16bit,则根据公式(1)可计算获得任一帧音频样本Ai内包含的字节数nBitA=2*44100*16*(1/30)/8。
需要说明的是,上述编码前交织步骤S200是可选的,既可以实施,也可以不实施。
S300、编码步骤,如图4所示,在该步骤中可采用编码装置300分别对接收的音频样本110和视频样本120或者是编码后交织队列中的音频样本和视频样本进行编码以形成编码后音频样本310和编码后视频样本320,并输出包括编码后音频样本310和编码后视频样本320的编码后音频视频队列330。其中,采用A′j和V′i分别表示编码后音频视频队列330中的任一帧编码后音频样本和任一帧编码后视频样本。
S400、编码后交织步骤,仍如图4所示,在编码装置300执行编码步骤S300的过程中,音频样本和视频样本均会消耗一定的字节数,例如以aj表示任一帧编码后音频样本A′j在编码步骤S300中消耗的字节数,以vi表示任一帧编码后视频样本V′i在编码步骤S300中消耗的字节数,其中A′j为编码后音频视频队列330中Aj对应的一帧编码后音频样本。如果编码步骤S300过程中Aj中包含的字节数与aj不相等,即所消耗的字节数与编码前的音频样本的字节数不相等,将导致编码器生成的编码后音频样本310的帧数M与编码后视频样本320的帧数N持续时间不相等,具体见图4中的编码后音频视频队列330,当这种编码后音频视频队列330合成为播放文件后,就有可能存在音频和视频不同步的问题。
针对于此,必须对编码后音频样本310和编码后视频样本320进行交织。在编码后交织步骤S400中,将采用编码后交织装置400基于编码后视频样本320的视频帧率对编码后音频样本310和编码后视频样本320进行交织以形成编码后交织队列410供文件合成。
具体而言,首先分别采集编码后音频视频队列330中的每一帧编码后音频样本A′j和每一帧编码后视频样本V′i在编码步骤S300中消耗的字节数,获得图4中所示的音频视频消耗字节数队列420,其中音频视频消耗字节数队列420中音频消耗字节数aj和视频消耗字节数vi分别与编码后音频视频队列330中编码后音频A′j和编码后视频V′i一一对应。基于音频视频消耗字节数队列420即可得到任一帧编码后音频样本和编码后视频样本的持续时长,以任一帧编码后音频样本Aj和编码后视频样本V′i为例,其对应的消耗字节数分别为aj和vi,则基于所消耗的字节数可以获得对应的持续时长Taj和Tvi。
如果编码后视频样本A′j消耗的字节数aj与其对应的编码前的音频样本Ai中包含的字节数不相等时,则Taj和Tvi不相等(即Taj≠Tvi),假设此时一帧编码后视频样本V′i的持续时长Tvi为k帧编码后音频样本(Aj、Aj+1...Aj+k)的持续时长之和,即Tvi=Taj+Taj+1+...+Taj+k,或者一帧编码后视频样本V′i的持续时长Tvi为k帧编码后音频样本(Aj、Aj+1...Aj+k)的持续时长之和的差小于或等于预设阈值,例如优选该预设阈值为0.01秒,则基于此对编码后音频样本和编码后视频样本进行编码后交织以得到编码后交织队列410。仍如图4所示,编码后交织队列410中任一帧编码后视频样本V″i对应的一帧编码后音频样本A″i由上述k帧编码后音频样本Aj、Aj+1...Aj+k的组合构成,即A″i=Aj+Aj+1+...+Aj+k,以确保编码后交织队列410中每一帧编码后视频样本V″i与其对应的一帧编码后音频样本A″i的持续时长相等,或者编码后交织队列410中每一帧编码后视频样本V″i与其对应的一帧编码后音频样本A″i的持续时长之差小于或等于预设阈值,此预设阈值优选为0.01秒,从而在合成文件进行播放后消除音频视频不同步的问题。
S500、文件合成步骤,在该步骤中可采用文件合成装置500将编码后交织队列410中的编码后音频样本和编码后视频样本合成文件以输出,从而可以进行媒体播放。
从以上可以看出,在本发明的实施例中,首先在编码前,基于接收的视频样本的视频帧率对接收的视频样本和音频样本进行交织,从而同步接收的音频和视频;进一步地,编码处理后,还可基于编码后视频样本的视频帧率对编码后视频样本和编码后音频样本进行交织以同步音频和视频;具体而言,为了消除编码过程中由于一帧音频样本消耗的字节数与编码前该帧音频样本内包含的字节数不相同导致音频视频不同步,则可基于编码后视频样本和编码后音频样本的持续时长对其进行进一步交织,从而同步音频视频。综上所述,采用本发明实施例中的音频视频同步处理方法,可以有效地同步音频视频。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。