一种视频处理方法及装置的制造方法_2

文档序号:9567518阅读:来源:国知局
具体实施方式】
[0050]这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
[0051]本发明实施例提供了一种视频处理方法,如图1所示,该方法包括步骤S101-S103:
[0052]在步骤S101中,对视频数据进行解封装得到待处理帧队列;
[0053]在步骤S102中,当从待处理帧队列中读取帧生成画面组文件时,比较当前读取的帧块的帧数与已读取的帧数之间的帧数和与预设帧数的大小,得到比较结果;
[0054]在步骤S103中,根据比较结果确定是否生成画面组文件以及是否从待处理帧队列中清除当前读取的帧块,其中,当前读取的帧块包括当前读取的关键帧和下一个关键帧之前的所有帧。
[0055]在该实施例中,在从待处理帧队列中读取帧生成画面组文件时,比较当前读取的帧块的帧数与已读取的帧数之间的帧数和,根据帧数和预设帧数之间的大小,确定是否从待处理帧队列中清除当前读取的帧块,这样,根据实际情况判断是否对当前读取帧块进行清除,避免过早清除当前读取的帧块造成的画面组文件不完整的问题,同时避免过晚清楚当前读取的帧块造成的资源浪费的问题,达到在合适的时间及时清除待处理帧队列中的帧块的目的。
[0056]如图2所示,在一个实施例中,上述步骤S103包括步骤S201:
[0057]步骤S201,当帧数和小于预设帧数时,在读取完当前读取的帧块后,从待处理帧队列中清除帧块,并更新已读取的帧数,继续读取下一个帧块。
[0058]在该实施例中,在帧数和小于预设帧数时,则说明当前已经读取的帧数还未达到画面组文件的预设帧数,可以直接将当前读取的帧块从待处理队列中清除。
[0059]如图3所示,在一个实施例中,上述步骤S103还包括步骤301:
[0060]步骤S301,当帧数和大于预设帧数时,在读取完帧块后,根据帧块和已读取的帧生成对应的当前画面组文件,并在待处理帧队列中继续保存帧块。
[0061]在该实施例中,在帧数和大于预设帧数时,则说明当前已经读取的帧数已超过画面组文件的预设帧数,即有部分帧需要存到下一个画面组文件中,因此,在待处理帧队列中继续保存当前读取的帧块,以便下一个画面组文件能够进行读取。
[0062]如图4所示,在一个实施例中,上述步骤S103还可以包括步骤S401:
[0063]步骤S401,当帧数和等于预设帧数时,在读取完帧块后,根据帧块和已读取的帧生成对应的当前画面组文件,并在待处理帧队列中清除帧块。
[0064]在该实施例中,在帧数和等于预设帧数时,则说明当前已经读取的帧数正好等于画面组文件的预设帧数,可以生成当前画面组文件,此时,可以清除当前读取的帧块。
[0065]如图5所示,在一个实施例中,上述方法还包括步骤S501-S504:
[0066]步骤S501,当帧数和大于预设帧数时,计算帧数和与预设帧数之间的第一差值;
[0067]步骤S502,当对当前画面组文件进行解码再编码时,将第一差值确定为当前画面组文件的尾部需要丢弃的帧数;
[0068]步骤S503,计算帧块中的帧数与当前画面组文件的尾部需要丢弃的帧数之间的第二差值;
[0069]步骤S504,将第二差值确定为当前画面组文件之后的画面组文件的头部需要丢弃的帧数。
[0070]在该实施例中,在当前画面组文件的帧数和大于预设帧数和时,则说明当前画面组文件中的末尾几帧需要占用下一个画面组文件的头部几帧,在对画面组文件进行解码再编码以得到流媒体文件时,帧数和与预设帧数之间的第一差值即为当前画面组文件的尾部需要丢弃的帧数,而当前读取的帧块中的剩余帧数即为下一个画面组文件的头部需要丢弃的帧数。
[0071 ] 下面以一个具体实施例详细说明本发明的技术方案。
[0072]对视频数据进行解封装得到视频帧和音频帧,将视频帧和音频帧逐帧写入待处理帧队列。如其中,假设G0P文件的预设帧数为1500帧。
[0073]当需要从待处理帧队列中读取出帧并生成G0P文件时,判断当前I帧块的帧数加上已读取出的帧数是否达到1500帧,如果没有达到,则读取出该I帧块,并在队列中清除该I帧块。同时更新已读取的帧数。其中,I帧块包括I帧及下一个I帧之前的所有帧。
[0074]如果超过1500帧,则将该I帧块读取出来,但是不从队列中清除。将读取出的所有帧生成G0P文件。同时记录超出1500帧的帧数,该帧数为编码时G0P尾部需要丢弃的帧数。
[0075]同时,针对下一个G0P,用I帧块的帧数减去前一个G0P尾部丢弃帧数,为下一个GOP头部需要丢弃的帧数。
[0076]针对下一个G0P,当需要从队列中读取出帧并生成G0P时,重复上述过程。
[0077]如果当前I帧块的帧数加上已读取出的帧数恰好为1500帧,则读取出该I帧块,并在队列中清除该I帧块。将读取出的所有帧生成GOP。G0P尾部需要丢弃的帧数为0,下一个G0P头部需要丢弃的帧数也为0。
[0078]下述为本发明装置实施例,可以用于执行本发明方法实施例。
[0079]图6是根据一示例性实施例示出的一种视频处理装置的框图,如图6所示,该视频处理装置包括:
[0080]解封装模块61,用于对视频数据进行解封装得到待处理帧队列;
[0081]比较模块62,用于当从所述待处理帧队列中读取帧生成画面组文件时,比较当前读取的帧块的帧数与已读取的帧数之间的帧数和与预设帧数的大小,得到比较结果;
[0082]处理模块63,用于根据比较结果确定是否生成画面组文件以及是否从所述待处理帧队列中清除所述当前读取的帧块,其中,所述当前读取的帧块包括当前读取的关键帧和下一个关键帧之前的所有帧。
[0083]如图7所示,在一个实施例中,所述处理模块63包括:
[0084]第一处理子模块71,用于当所述帧数和小于所述预设帧数时,在读取完所述当前读取的帧块后,从所述待处理帧队列中清除所述帧块,并更新所述已读取的帧数,继续读取下一个帧块。
[0085]如图8所示,在一个实施例中,所述处理模块63包括:
[0086]第二处理子模块81,用于当所述帧数和大于所述预设帧数时,在读取完所述帧块后,根据所述帧块和已读取的帧生成对应的当前画面组文件,并在所述待处理帧队列中继续保存所述帧块。
[0087]如图9所示,在一个实施例中,上述装置还包括:
[0088]第一计算模块91,用于计算所述帧数和与所述预设帧数之间的第一差值;
[0089]第一确定模块92,用于当对所述当前画面组文件进行解码再编码时,将所述第一差值确定为所述当前画面组文件的尾部需要丢弃的帧数;
[0090]第二计算模块93,用于计算所述帧块中的帧数与所述当前画面组文件的尾部需要丢弃的帧数之间的第二差值;
[0091]第二确定模块94,用于将
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1