一种通过处理时码跳变以使视音频同步的方法

文档序号:7852646阅读:205来源:国知局
专利名称:一种通过处理时码跳变以使视音频同步的方法
技术领域
本发明涉及视音频剪辑领域,尤其涉及一种通过处理时码跳变以使视音频同步的方法。
背景技术
随着计算机处理能力的增强,视音频处理技术也有了长足的发展。视音频处理的过程中,视音频剪辑是最常用到的技术。在数字电视系统中,模拟视音频信号按照MPEG-2的标准,经过抽样、量化及压缩编码形成基本码流ES,基本码流ES是不分段的连续码流。把基本码流分割成段,并加上对应的头文件打包形成的打包基本码流PES,PES包和包之间可以是不连续的。在传输时将 PES包再分段打成有固定长度的传送码流TS (TransportStream)或可变长度的节目流PS(ProgramStream)0 TS和PS分别适用于不同的场合应用,节目流PS适合在相对出错较少的环境下使用,其长度是变化的,而传送流TS能够把多个节目在基于一个或多个时间表示的基础上构成一个流,TS适合于出错较多的场合下使用。现有技术中,TS流中间的显示时间标签PTS或解码时间标签DTS等时码会发生跳变,由此会导致跳变处前后视音频的PTS和DTS不连续,甚至音频流和视频流跳变的程度还不一样,这就会造成TS流文件最终播出时视音频不同步,甚至视频或音频本身都不够连续。

发明内容
为解决上述问题,本发明提供一种通过处理时码跳变以使视音频同步的方法,通过记录跳变前的PTS和DTS,并以此来调整跳变后的PTS和DTS,使视音频本身足够连续,并在此基础上进一步进行视音频同步处理,使TS流发生时码跳变后也可以实现最终播出时达到视音频同步,且使视频或音频本身不会因为时码的跳变而不连续,极大的提高了节目播出的效果。为达到上述目的,本发明实施例提供了一种通过处理时码跳变以使视音频同步的方法,包括以下步骤步骤101,接收视音频数据;步骤102,解析所述视音频数据,顺序获取显示时间标签(PTS);步骤103,判断当前PTS与上个PTS相比是否发生跳变,若是,进入步骤104,若否,进入步骤105,其中,所述当前PTS为视频流的PTS ;步骤104,判断所述当前PTS对应的当前巾贞是否为关键巾贞(KeyFrame),若是,进入步骤106,若否,丢弃所述当前帧;步骤105,记录所述当前PTS,判断是否有音频流发生跳变,若是,则将所述音频流进行衔接,进入步骤109 ;步骤106,计算所述跳变的时长;
步骤107,根据所述跳变的时长修改所述当前PTS,得到修改后的PTS,使所述修改后的PTS与所述上个PTS保持连续,生成衔接后的视频流;步骤108,判断是否有音频流发生跳变,若是,则将所述音频流进行衔接,生成衔接后的首频流;进入步骤109 ;步骤109,将所述衔接后的视频流和所述衔接后的音频流同步输出。本发明实施例的技术方案带来的有益效果如下通过步骤101,接收视音频数据;步骤102,解析所述视音频数据,顺序获取显示时间标签(PTS);步骤103,判断当前PTS与上个PTS相比是否发生跳变,若是,进入步骤104,若否,进入步骤105,其中,所述当前PTS为视频流的PTS ;步骤104,判断所述当前PTS对应的当前帧是否为关键帧(KeyFrame),若是,进入步骤106,若否,丢弃所述当前帧;步骤105,记录所述当前PTS,判断是否有音频流发生跳变,若是,则将所述音频流进行衔接,进入步骤109 ;步骤106,计算所述跳变的时长;步骤107,根据所述跳变的时长修改所述当前PTS,得到修改后的PTS,使所述修改后的PTS与所 述上个PTS保持连续,生成衔接后的视频流;步骤108,判断是否有音频流发生跳变,若是,则将所述音频流进行衔接,生成衔接后的音频流;进入步骤109 ;步骤109,将所述衔接后的视频流和所述衔接后的音频流同步输出,使TS流发生时码跳变后也可以实现最终播出时达到视音频同步,且使视频或音频本身不会因为时码的跳变而不连续,极大的提高了节目播出的效果。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图I是本发明实施例一种通过处理时码跳变以使视音频同步的方法流程图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例提供了一种通过处理时码跳变以使视音频同步的方法,如图1,包括以下步骤步骤101,接收视音频数据;步骤102,解析所述视音频数据,顺序获取显示时间标签(PTS);判断所述当前PTS与上个PTS的绝对差值是否大于2秒,若是则判定发生跳变;其中,若所述当前PTS的第33为是0,且所述上个PTS的第33为是I,则将所述上个PTS增加0x200000000再与所述当前PTS进行比较。其中,计算所述跳变时长具体为跳变时长=当前PTS-上一帧视频持续时长-max (上一帧视频ui64PTS,上一帧音频 ui64PTS);其中,所述ui64PTS是将PTS预先定义为unsifned 64bit int类型的数据。步骤103,判断当前PTS与上个PTS相比是否发生跳变,若是,进入步骤104,若否,进入步骤105,其中,所述当前PTS为视频流的PTS ;步骤104,判断所述当前PTS对应的当前巾贞是否为关键巾贞(KeyFrame),若是,进入步骤106,若否,丢弃所述当前帧;步骤105,记录所述当前PTS,判断是否有音频流发生跳变,若是,则将所述音频流进行衔接,进入步骤109 ;其中,所述判断是否有音频流发生跳变,若是,则将所述音频流进行衔接,生成衔接后的音频流具备包括判断当前音频PTS与上个音频PTS相比是否发生跳变,若否,记录当前音频PTS,若是,计算所述跳变的时长; 根据所述跳变的时长修改所述当前音频PTS,得到修改后的音频PTS,使所述修改后的音频PTS与所述上个音频PTS保持连续,生成衔接后的音频流;判断是否所有音频流都发生变化,若是,则处理所述所有音频流。步骤106,计算所述跳变的时长;步骤107,根据所述跳变的时长修改所述当前PTS,得到修改后的PTS,使所述修改后的PTS与所述上个PTS保持连续,生成衔接后的视频流;判断是否所有视频流都发生变化,若是,则处理所述所有视频流。步骤108,判断是否有音频流发生跳变,若是,则将所述音频流进行衔接,生成衔接后的首频流;进入步骤109 ;其中,所述判断是否有音频流发生跳变,若是,则将所述音频流进行衔接,生成衔接后的音频流具体包括判断当前音频PTS与上个音频PTS相比是否发生跳变,若否,记录当前音频PTS,若是,计算所述跳变的时长;根据所述跳变的时长修改所述当前音频PTS,得到修改后的音频PTS,使所述修改后的音频PTS与所述上个音频PTS保持连续,生成衔接后的音频流;判断是否所有音频流都发生变化,若是,则处理所述所有音频流。步骤109,将所述衔接后的视频流和所述衔接后的音频流同步输出。其中,上述步骤中,所述上个PTS具体为所述当前PTS之前最大的PTS。本发明实施例的技术方案带来的有益效果如下通过步骤101,接收视音频数据;步骤102,解析所述视音频数据,顺序获取显示时间标签(PTS);步骤103,判断当前PTS与上个PTS相比是否发生跳变,若是,进入步骤104,若否,进入步骤105,其中,所述当前PTS为视频流的PTS ;步骤104,判断所述当前PTS对应的当前帧是否为关键帧(KeyFrame),若是,进入步骤106,若否,丢弃所述当前帧;步骤105,记录所述当前PTS,判断是否有音频流发生跳变,若是,则将所述音频流进行衔接,进入步骤109 ;步骤106,计算所述跳变的时长;步骤107,根据所述跳变的时长修改所述当前PTS,得到修改后的PTS,使所述修改后的PTS与所述上个PTS保持连续,生成衔接后的视频流;步骤108,判断是否有音频流发生跳变,若是,则将所述音频流进行衔接,生成衔接后的音频流;进入步骤109 ;步骤109,将所述衔接后的视频流和所述衔接后的音频流同步输出,使TS流发生时码跳变后也可以实现最终播出时达到视音频同步,且使视频或音频本身不会因为时码的跳变而不连续,极大的提高了节目播出的效果。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以可借助软件加必要的通用硬件平台的方式来实现,基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是⑶-R0M,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。 凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种通过处理时码跳变以使视音频同步的方法,其特征在于,包括以下步骤 步骤101,接收视音频数据; 步骤102,解析所述视音频数据,顺序获取显示时间标签(PTS); 步骤103,判断当前PTS与上个PTS相比是否发生跳变,若是,进入步骤104,若否,进入步骤105,其中,所述当前PTS为视频流的PTS ; 步骤104,判断所述当前PTS对应的当前巾贞是否为关键巾贞(KeyFrame),若是,进入步骤106,若否,丢弃所述当前帧; 步骤105,记录所述当前PTS,判断是否有音频流发生跳变,若是,则将所述音频流进行 衔接,进入步骤109 ; 步骤106,计算所述跳变的时长; 步骤107,根据所述跳变的时长修改所述当前PTS,得到修改后的PTS,使所述修改后的PTS与所述上个PTS保持连续,生成衔接后的视频流; 步骤108,判断是否有音频流发生跳变,若是,则将所述音频流进行衔接,生成衔接后的音频流;进入步骤109 ; 步骤109,将所述衔接后的视频流和所述衔接后的音频流同步输出。
2.如权利要求I所述方法,其特征在于,步骤105和步骤108所述判断是否有音频流发生跳变,若是,则将所述音频流进行衔接,生成衔接后的音频流具体包括以下步骤 判断当前音频PTS与上个音频PTS相比是否发生跳变,若否,记录当前音频PTS,若是,计算所述跳变的时长; 根据所述跳变的时长修改所述当前音频PTS,得到修改后的音频PTS,使所述修改后的音频PTS与所述上个音频PTS保持连续,生成衔接后的音频流。
3.如权利要求I所述方法,其特征在于,步骤107所述根据所述跳变的时长修改所述当前PTS,得到修改后的PTS,使所述修改后的PTS与所述上个PTS保持连续之后还包括 判断是否所有视频流都发生变化,若是,则处理所述所有视频流。
4.如权利要求2所述方法,其特征在于,所述根据所述跳变的时长修改所述当前音频PTS,得到修改后的音频PTS,使所述修改后的音频PTS与所述上个音频PTS保持连续之后还包括 判断是否所有音频流都发生变化,若是,则处理所述所有音频流。
5.如权利要求1-4所述方法,其特征在于,所述上个PTS具体为所述当前PTS之前最大的PTS。
6.如权利要求1-5所述方法,其特征在于,步骤102所述判断当前PTS与上个PTS相比是否发生跳变具体为 判断所述当前PTS与上个PTS的绝对差值是否大于2秒,若是则判定发生跳变; 其中,若所述当前PTS的第33为是0,且所述上个PTS的第33为是1,则将所述上个PTS增加0x200000000再与所述当前PTS进行比较。
7.如权利要求I或2所述方法,其特征在于,所述计算所述跳变时长具体为 跳变时长=当前PTS-上一帧视频持续时长-max (上一帧视频ui64PTS,上一帧音频ui64PTS); 其中,所述ui64PTS是将PTS预先定义为unsifned 64bit int类型的数据。
全文摘要
本发明公开了一种通过处理时码跳变以使视音频同步的方法,通过判断当前PTS与上个PTS相比是否发生跳变;判断所述当前PTS对应的当前帧是否为关键帧,若否,丢弃所述当前帧;记录所述当前PTS,判断是否有音频流发生跳变,若是,则将所述音频流进行衔接;计算所述跳变的时长;根据所述跳变的时长修改所述当前PTS,得到修改后的PTS,使所述修改后的PTS与所述上个PTS保持连续,生成衔接后的视频流;判断是否有音频流发生跳变,若是,则将所述音频流进行衔接,生成衔接后的音频流将所述衔接后的视频流和所述衔接后的音频流同步输出,使TS流发生时码跳变后也可以实现最终播出时达到视音频同步,且使视频或音频本身不会因为时码的跳变而不连续,极大的提高了节目播出的效果。
文档编号H04N21/44GK102780929SQ20121017692
公开日2012年11月14日 申请日期2012年5月31日 优先权日2012年5月31日
发明者夏永宏, 谷洁平 申请人:新奥特(北京)视频技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1