一种视频网络传输中基于mpeg4的音视频同步控制方法

文档序号:7750630阅读:137来源:国知局
专利名称:一种视频网络传输中基于mpeg4的音视频同步控制方法
技术领域
本发明涉及视频网络技术领域,尤其是一种在视频网络传输中的基于MPEG4的音 视频同步控制方法。
背景技术
随着网络直播,通信技术及音视频内容传输方面先进的音视频压缩标准的引入 (例如MPEG4标准),人们对于音频与视频的时序关系程度也在不断的提高。音频和视频的 解码和播放必须按照一定的先后顺序完成,这样才能确保“对上口型”。因此,确保音频和视 频解码后的数据流同步播放,这正是业内人士所关注的问题。如今,音视频同步播放的技术很多,有IP网络流媒体音视频同步播放,互联网流 媒体格式音视频同步的方法等。对于一种流媒体音视频同步系统,其特征包含了缓存模块 包括预解码和解码时音频缓存模块与视频缓存模块;输入输出控制模块用于控制解码后 的音频及视频数据的输出;解码模块把包括音频解码模块与视频解码模块等。对此,我们会发现一些问题,缓存模块过多,由于资源有限将影响中央处理器 (CPU)的利用率,而且可能使等待时间过长。

发明内容
为了克服已有的视频同步控制方法的缓存模块过多、限制CPU利用率、成本高的 不足,本发明提供一种避免采用较多缓存模块、提高CPU利用率、降低成本的视频网络传输 中基于MPEG4的音视频同步控制方法。本发明解决其技术问题所采用的技术方案是—种视频网络传输中基于MPEG4的音视频同步控制方法,所述音视频同步控制方 法包括以下步骤通过音频的采样率和每帧包含的采样数目计算出当前音频已经播放的时间,然后 通过视频的每秒传输帧数来计算视频应当播放的帧数;如果当前实际播放的帧数大于应该播放的帧数,则调度时不执行视频的播放,直 到音频播放了足够的帧数,对视频播放产生了新的需求时,播放程序才会继续;当需要播放的帧数大于实际已经播放的视频帧数加缓冲器数目时,在视频数据解 码完毕,进行处理YUV转换之前,直接将解码后结果抛弃。进一步,将解码后的结果抛弃后,将当前解码缓冲器的标记设置为bUfTer_skip, 并将解码指针后移,当播放程序看到bUfTer_skip时,直接将缓冲器标记位设成buffer free,再将播放指针后移,然后把当前实际播放的视频帧数加1。本发明的技术构思为在此同步技术中,我们需要控制四个进程(音频解码,视频 解码,音频播放和视频播放),实现它们之间的同步。因此,我们主要分为两方面同步解码 和播放的同步、音频和视频的同步。音视频同步过程中主要由三个函数控制完成mpeg4_initial (),mpeg4_continue ()和 mpeg4_stop ()。mpeg4_initial ()解码初始化函数。主要包括打开文件,设置有关硬件参数(如 编解码器(CODEC),直接存储器(DMA)等),解码参数初始化(如帧数统计,波特率设置,解 码初始位置等),根据文件类型设置控制参数(如音频流格式,视频流格式,静音设置和暂 停设置等),申请地址空间(如输出缓冲(BUFFER)等)。mpeg4_continue()解码过程的实体函数。完成读取输入,解码以及写输出的工 作,以帧为单位。如果返回1代表解码正常,可对其本身进行再调用,实现下一帧的解码。返 回0则代表文件结束或者出现异常。其主要实现音频的连续播放(使用DMA完成CODEC的 写工作,CPU同时完成音频的解码,并用一组标志位实现DMA、C0DEC播放和CPU的解码),音 视频的同步(用音频控制视频实现同步),暂停及音量调节、音效调节等其它功能。mpeg4_stop()编码完成函数。完成对硬件的设置(如关闭CODEC),并释放内存 空间,设定结束参数等。(1)解码和播放的同步对于音频播放和解码,以及视频播放和解码的同步方式是类似的。播放与解码的同步流程见附图1 ;我们使解码可以先于播放,这样可保证当不可抗拒的因素导致解码短时间内停顿 的时候,播放进程还是有足够的数据可以播放。同时,解码时写入解码结果的输出BUFFER 和播放时的输入BUFFER实际上是同一块BUFFER。该BUFFER相当于一个循环数组,并要求 播放指针不超过解码指针且解码指针不能移动过快。为实现控制,对于每个BUFFER都设一 个标志(FLAG)。a)程序初始化时,每个FLAG都设置为buffer_free。解码程序如果检测到解码 指针对应的BUFFER标志位为buffer_free时进行解码程序,将解码后的数据写入BUFFER 以后,将该BUFFER的标志设为buffer_Wait,同时将解码指针后移;如果解码指针指向的 BUFFER是其他状态,则本次调度不执行解码。b)播放程序如果检测到BUFFER的标志位为bufTer_Wait,则开始播放程序,并将 BUFFER的标志位设为buffer_busy。当播放结束后,将BUFFER的标志位写成buffer_free 并将播放指针后移;如果BUFFER指针指向的BUFFER标志位不是buffer_Wait,则本次调度 不执行播放。由于音频播放要求的连贯性,我们用DMA来实现音频的播放。播放程序的启动在 普通的代码中,而播放后的处理工作(即写buffer_free和指针后移的过程则需要放在经 DMA处理完所产生的数据中断中进行)。音频和视频的同步的实现在文件播放中,音频的速率是一定的,不可增快也不可 减慢,因此,我们用音频控制视频实现同步,并在此控制过程中,解决两个问题a)如果视频快于音频,如何控制视频的播放速度方法是通过音频已经播放的帧数来控制视频允许播放的帧数。通过音频的采样率 和每帧包含的采样数目等参数计算出当前音频已经播放的时间,然后通过视频的每秒传输 帧数(FPS)来计算视频应当播放的帧数。如果当前实际播放的帧数大于应该播放的帧数, 则调度时不执行视频的播放,直到音频播放了足够的帧数,对视频播放产生了新的需求时, 播放程序才会继续。这样,我们就有效的控制了视频的播放速度。
b)如果视频慢于音频,如何丢帧使视频赶上音频必须考虑的情况是由于系统一直保证音频的解码,有可能在播放某些画面切换 很快的视频文件时,系统来不及解码视频的情况。因此,为了使得视频能赶上音频,必须抛 弃一些视频的帧。当然,由于MPEG4解码器的特性,除了关键帧以外,其他帧数的解码结果 必须依赖于上一帧的解码结果。因此,丢弃的只是每一帧色彩空间(YUV)转换以及液晶显 示屏0XD)输出的一部分。本发明的有益效果主要表现在减少缓存空间,使资源有效的利用,音视频同步效 果良好。


图1是播放与解码的同步流程图。图2是视频与音频的同步流程图。
具体实施例方式下面结合附图对本发明作进一步描述。参照图2,一种视频网络传输中基于MPEG4的音视频同步控制方法,所述音视频同 步控制方法包括以下步骤通过音频的采样率和每帧包含的采样数目计算出当前音频已经播放的时间,然后 通过视频的每秒传输帧数来计算视频应当播放的帧数;如果当前实际播放的帧数大于应该播放的帧数,则调度时不执行视频的播放,直 到音频播放了足够的帧数,对视频播放产生了新的需求时,播放程序才会继续;当需要播放的帧数大于实际已经播放的视频帧数加缓冲器数目时,在视频数据解 码完毕,进行处理YUV转换之前,直接将解码后结果抛弃。将解码后的结果抛弃后,将当前解码缓冲器的标记设置为buffer_Skip,并将解码 指针后移,当播放程序看到bUffer_Skip时,直接将缓冲器标记位设成bUffer_free,再将 播放指针后移,然后把当前实际播放的视频帧数加1。本实施例中,在文件播放中,音频的速率是一定的,不可增快也不可减慢,因此,我 们用音频控制视频实现同步,并在此控制过程中,解决两个问题a)如果视频快于音频,如何控制视频的播放速度方法是通过音频已经播放的帧数来控制视频允许播放的帧数。通过音频的采样率 和每帧包含的采样数目等参数计算出当前音频已经播放的时间,然后通过视频的每秒传输 帧数(FPS)来计算视频应当播放的帧数。如果当前实际播放的帧数大于应该播放的帧数, 则调度时不执行视频的播放,直到音频播放了足够的帧数,对视频播放产生了新的需求时, 播放程序才会继续。这样,我们就有效的控制了视频的播放速度。b)如果视频慢于音频,如何丢帧使视频赶上音频此时,音频和视频的同步流程见附图2。必须考虑的情况是由于系统一直保证音频的解码,有可能在播放某些画面切换 很快的视频文件时,系统来不及解码视频的情况。因此,为了使得视频能赶上音频,必须抛 弃一些视频的帧。当然,由于MPEG4解码器的特性,除了关键帧以外,其他帧数的解码结果必须依赖于上一帧的解码结果。因此,丢弃的只是每一帧色彩空间(YUV)转换以及液晶显 示屏0XD)输出的一部分。实现方式如下当需要播放的帧数大于实际已经播放的视频帧数加BUFFER数目 时,可以认为系统无法解码足够的视频帧数。如果出现这种情况,在解码完毕,处理YUV之 前,直接将解码后结果抛弃,并将当前解码BUFFER的标记设置为bUfTer_skip,并将解码 指针后移,这样就减少了该帧的YUV转换操作。当播放程序看到buffer_skip时,直接将 BUFFER标记位设成buffer_free (这一步必须进行,因为BUFFER中是无效的数据),再将播 放指针后移,然后把当前实际播放的帧数加1 (跟正常的播放操作一样)。这样就减少了一 次LCD播放。抛弃一帧意味着减少一次YUV转换以及一次IXD输出(目前输出是基于CPU而非 基于DMA)。因此,一次跳帧意味着节省3个左右的每秒百万条指令(MIPS)。这里所谓的 跳帧只是把一帧设置为无效,但是这一帧还是跟正常的播放帧一样存在于整个视频BUFFER 序列中,因此不会影响到视频和音频的同步。
权利要求
一种视频网络传输中基于MPEG4的音视频同步控制方法,其特征在于所述音视频同步控制方法包括以下步骤通过音频的采样率和每帧包含的采样数目计算出当前音频已经播放的时间,然后通过视频的每秒传输帧数来计算视频应当播放的帧数;如果当前实际播放的帧数大于应该播放的帧数,则调度时不执行视频的播放,直到音频播放了足够的帧数,对视频播放产生了新的需求时,播放程序才会继续;当需要播放的帧数大于实际已经播放的视频帧数加缓冲器数目时,在视频数据解码完毕,进行处理YUV转换之前,直接将解码后结果抛弃。
2.如权利要求1所述的一种视频网络传输中基于MPEG4的音视频同步控制方法,其特 征在于将解码后的结果抛弃后,将当前解码缓冲器的标记设置为bUfTer_skip,并将解码 指针后移,当播放程序看到bUffer_Skip时,直接将缓冲器标记位设成bUffer_free,再将 播放指针后移,然后把当前实际播放的视频帧数加1。
全文摘要
一种视频网络传输中基于MPEG4的音视频同步控制方法,包括以下步骤通过音频的采样率和每帧包含的采样数目计算出当前音频已经播放的时间,然后通过视频的每秒传输帧数来计算视频应当播放的帧数;如果当前实际播放的帧数大于应该播放的帧数,则调度时不执行视频的播放,直到音频播放了足够的帧数,对视频播放产生了新的需求时,播放程序才会继续;当需要播放的帧数大于实际已经播放的视频帧数加缓冲器数目时,在视频数据解码完毕,进行处理YUV转换之前,直接将解码后结果抛弃。本发明避免采用较多缓存模块、提高CPU利用率、降低成本。
文档编号H04N7/26GK101877791SQ20101019180
公开日2010年11月3日 申请日期2010年6月4日 优先权日2010年6月4日
发明者华惊宇, 孟利民, 张江鑫, 徐志江 申请人:浙江工业大学;杭州普诺科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1