一种视频封装前的检测方法及装置制造方法

文档序号:7776642阅读:107来源:国知局
一种视频封装前的检测方法及装置制造方法
【专利摘要】本发明实施例提供一种视频封装前的检测方法,包括:创建视频画面组GOP的内存映射表和音频包的内存映射表;接收所述GOP,提取所述GOP的序号,并将所述GOP的序号写入所述GOP的内存映射表;接收所述音频包,提取所述音频包的序号,并将所述音频包的序号写入所述音频包的内存映射表;判断所述GOP,以及所述音频包是否全部接收成功。本发明实施例还提供了一种视频封装前的检测装置。使用本发明实施例公开的视频封装前的检测方法和装置,可在对视频进行封装之前通过内存映射表的记录情况来判断GOP和音频包是否遗失,从而能够最大程度的避免由于GOP或者音频包的遗失造成的视频封装不成功的情况。
【专利说明】一种视频封装前的检测方法及装置
【技术领域】
[0001]本发明涉及计算机【技术领域】,尤其涉及一种视频封装前的检测方法及装置。
【背景技术】
[0002]当有大量视频需要进行转换格式时,可以采用多台单机版的转码软件进行转码;而更为高效的办法是设计一个分布式的转码系统进行转码。视频转码一般可分为四个步骤进行:a、解封装,b、视频解码编码,C、音频解码编码,d、封装。这四个步骤中视频解码编码这一步要耗费整个转码过程80%_90%的时间。为了提高转码速度,减少转码的整体时间最核心的是要减少视频解码编码的处理时间。
[0003]分布式转码的思想是利用多台服务器同时并行对进GOP (Group of Pictures,画面组)解码编码处理,并行处理GOP的服务器越多,整个转码过程耗时就越少。为此分布式转码系统一般被设计为:一台服务器负责解封装,多台服务器负责处理G0P,一台服务器负责处理音频包,一台服务器负责封装并输出目标视频文件。图1所示即为分布式转码的系统示意图。
[0004]依据现有的分布式转码系统,同时对GOP和音频包进行转码的服务器数量越多,转码的效率也就越高,但是服务器数量越多越容易造成GOP或者音频包的丢失,从而造成视频封装的失败。如何在保证转码效率的同时确保GOP和音频包的完整传输,是现有技术中面临的一个问题。

【发明内容】

[0005]为了解决现有技术视频转码GOP和音频包传输易丢失的问题,本发明实施例提出一种视频封装前的检测方法和装置。
[0006]本发明的一个方面,提供一种视频封装前的检测方法,包括:创建视频画面组GOP的内存映射表和音频包的内存映射表;
[0007]接收所述G0P,提取所述GOP的序号,并提取所述GOP的总数并保存,将所述GOP的序号与入所述GOP的内存映射表;
[0008]接收所述音频包,提取所述音频包的序号,并提取所述所述音频包的总数并保存,将所述音频包的序号写入所述音频包的内存映射表;
[0009]判断所述G0P,以及所述音频包是否全部接收成功。
[0010]本发明的另一个方面,提供一种视频封装前的检测装置,包括:
[0011]创建单元,用于创建视频画面组GOP的内存映射表和音频包的内存映射表;
[0012]GOP内存与入单兀,用于接收所述G0P,提取所述GOP的序号,并将所述GOP的序号写入所述GOP的内存映射表;
[0013]所述GOP内存写入单元在接收所述GOP之后,还用于提取所述GOP的总数并保存;
[0014]音频包内存写入单元,用于接收所述音频包,提取所述音频包的序号,并将所述音频包的序号写入所述音频包的内存映射表;[0015]所述音频包内存写入单元在接收所述音频包之后,还用于提取所述音频包的总数并保存;
[0016]判断单元,用于判断所述G0P,以及所述音频包是否全部接收成功。
[0017]使用本发明实施例公开的视频封装前的检测方法和装置,服务器首先为GOP和音频包创建内存映射表,随着GOP和音频包的接收,在内存映射表中记录它们的接收情况,这样即可在对视频进行封装之前通过内存映射表的记录情况来判断GOP和音频包是否遗失,从而能够最大程度的避免由于GOP或者音频包的遗失造成的视频封装不成功的情况。
【专利附图】

【附图说明】
[0018]图1所示是一种分布式转码的系统示意图;
[0019]图2所示是本发明实施例提供的一种视频封装前的检测方法的示意图;
[0020]图3所示是本发明实施例提供的一种视频封装前的检测装置的结构示意图;
[0021]图4所示是本发明实施例提供的另一种视频封装前的检测装置的结构示意图。
【具体实施方式】
[0022]在本发明实施例中,服务器首先为GOP和音频包创建内存映射表,随着GOP和音频包的接收,在内存映射表中记录它们的接收情况,这样即可在对视频进行封装之前通过内存映射表的记录情况来判断GOP和音频包是否遗失,从而能够最大程度的避免由于GOP或者音频包的遗失造成的视频封装不成功的情况。
[0023]以下详细说明本发明实施例提供的视频封装前的检测方法。
[0024]图2所示为本发明一个实施例提供的视频封装前的检测方法示意图,根据该图,详述各步骤如下:
[0025]步骤201、创建视频画面组GOP的内存映射表和音频包的内存映射表;
[0026]步骤202、接收所述G0P,提取所述GOP的序号,并提取所述GOP的总数并保存,将所述GOP的序号写入所述GOP的内存映射表;
[0027]步骤203、接收所述音频包,提取所述音频包的序号,并提取所述所述音频包的总数并保存,将所述音频包的序号写入所述音频包的内存映射表;
[0028]具体地,本发明实施例提供一种算法来将GOP和音频包的序号写入内存映射表。
[0029]使用下述算法将所述GOP的序号写入所述GOP的内存映射表,以及将所述音频包的序号与入所述首频包的内存映射表:
[0030]Int N
[0031]Char Table [Μ]
[0032]If (Ν%8==0)
[0033]Table[Ν/8]=0x011 Table[Ν/8];
[0034]If (Ν%8==1)
[0035]Table[Ν/8]=0x02|Table[Ν/8];
[0036]If (N%8==2)
[0037]Table[N/8]=0x04 I Table[N/8];
[0038]If (N%8==3)[0039]Table[N/8]=0x08|Table[N/8];
[0040]If (N%8==4)
[0041]Table[N/8]=0x10 I Table[N/8];
[0042]If (N%8==5)
[0043]Table[N/8]=0x20|Table[N/8];
[0044]If(N%8==6)
[0045]Table[N/8]=0x40 I Table[N/8];
[0046]If (N%8==7)
[0047]Table[N/8]=0x80 I Table[N/8];
[0048]其中,N表示所述GOP或音频包的序号;
[0049]Table M表示所述GOP或音频包的内存映射表。
[0050]步骤204、判断所述G0P,以及所述音频包是否全部接收成功。
[0051]其中,若所述GOP或者所述音频包没有全部接收成功,则获取所述缺失的GOP或者所述缺失的音频包。
[0052]以下实施例介绍如何判断GOP是否全部接收成功。
[0053]前述步骤204判断所述GOP是否全部接收成功,包括:
[0054]根据所述GOP的总数以及所述GOP的内存映射表,使用特定的算法判断所述GOP是否全部接收成功;
[0055]若所述GOP没有全部接收成功,并获取缺失的GOP的序号。
[0056]具体地,所述使用特定的算法判断所述GOP是否全部接收成功,包括:
[0057]使用下述算法判断所述GOP是否全部接收成功,若所述GOP没有全部接收成功,则获取所述缺失的GOP的序号;
[0058]Int N)
[0059]Char Table [Μ]
[0060]For (int i=0;i<N;i++)
[0061]{
[0062]If (i%8==0)
[0063]result=0x01&Table[i/8];
[0064]If (i%8==l)
[0065]result=(0x02&Table[i/8])>>1;
[0066]If (i%8==2)
[0067]result=(0x04&Table[i/8])>>2;
[0068]If (i%8==3)
[0069]result=(0x08&Table[i/8])>>3;
[0070]If (i%8==4)
[0071]result=(OxlO&Table[i/8])>>4;
[0072]If (i%8==5)
[0073]result=(0x20&Table[i/8])>>5;
[0074]If (i%8==6)[0075]result=(0x40&Table[i/8])>>6;
[0076]If (i%8==7)
[0077]result= (0x80&Table [i/8]) ?7;
[0078]if (result==。)
[0079]return i ; //
[0080]}
[0081]if (i==N) //
[0082]其中,N表示所述GOP的总数;
[0083]Table M表不所述GOP的内存映射表;
[0084]i表示所述GOP的序号。
[0085]前述步骤204中判断所述音频包是否全部接收成功,包括:
[0086]根据所述音频包的总数以及所述音频包的内存映射表,使用特定的算法判断所述音频包是否全部接收成功;
[0087]若所述音频包没有全部接收成功,获取缺失的音频包的序号。
[0088]所述使用特定的算法判断所述音频包是否全部接收成功,包括:
[0089]使用下述算法判断所述音频包是否全部接收成功,若所述音频包没有全部接收成功,则获取缺失的音频包的序号;
[0090]Int N)
[0091]Char Table [Μ]
[0092]For (int i=0;i<N;i++)
[0093]{
[0094]If (i%8==0)
[0095]result=0x01&Table[i/8];
[0096]If (i%8==l)
[0097]result=(0x02&Table[i/8])>>1;
[0098]If (i%8==2)
[0099]result=(0x04&Table[i/8])>>2;
[0100]If (i%8==3)
[0101]result=(0x08&Table[i/8])>>3;
[0102]If (i%8==4)
[0103]result=(OxlO&Table[i/8])>>4;
[0104]If (i%8==5)
[0105]result=(0x20&Table[i/8])>>5;
[0106]If (i%8==6)
[0107]result=(0x40&Table[i/8])>>6;
[0108]If (i%8==7)[0109]result=(0x80&Table[i/8])>>7;
[0110]if (result==0)
[0111]return i ; //[0112]}
[0113]if Q==N)//
[0114]其中,N表示所述音频包的总数;
[0115]Table M表示所述音频包的内存映射表;
[0116]i表示所述音频包的序号。
[0117]使用本发明实施例公开的视频封装前的检测方法,服务器首先为GOP和音频包创建内存映射表,随着GOP和音频包的接收,在内存映射表中记录它们的接收情况,这样即可在对视频进行封装之前通过内存映射表的记录情况来判断GOP和音频包是否遗失,从而能够最大程度的避免由于GOP或者音频包的遗失造成的视频封装不成功的情况。
[0118]以下公开一种视频封装前的检测装置,用以执行前述实施例中公开的方法。
[0119]图3所示为本发明一个实施例提供的一种视频封装前的检测装置的结构示意图。依据该图,详述其中各组成部分如下:
[0120]创建单元301,用于创建视频画面组GOP的内存映射表和音频包的内存映射表;
[0121]GOP内存写入单元302,用于接收所述G0P,提取所述GOP的序号,并将所述GOP的序号与入所述GOP的内存映射表;
[0122]其中,所述GOP内存写入单元302在接收所述GOP之后,还用于提取所述GOP的总
数并保存。
[0123]音频包内存写入单元303,用于接收所述音频包,提取所述音频包的序号,并将所述音频包的序号写入所述音频包的内存映射表;
[0124]其中,所述音频包内存写入单元303在接收所述音频包之后,还用于提取所述音频包的总数并保存。
[0125]判断单元304,用于判断所述G0P,以及所述音频包是否全部接收成功。
[0126]其中,图4所示为本发明一个实施例提供的另外一种视频封装前的检测装置的结构示意图。由该图可以看出,该装置还可以包括:
[0127]获取单元305,用于在所述判断单元判断所述GOP或者所述音频包没有全部接收成功时,则获取所述缺失的GOP或者所述缺失的音频包。
[0128]使用本发明实施例公开的视频封装前的检测方法和装置,服务器首先为GOP和音频包创建内存映射表,随着GOP和音频包的接收,在内存映射表中记录它们的接收情况,这样即可在对视频进行封装之前通过内存映射表的记录情况来判断GOP和音频包是否遗失,从而能够最大程度的避免由于GOP或者音频包的遗失造成的视频封装不成功的情况。
[0129]本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟、光盘、网络节点、调度器等各种可以存储程序代码的介质。
[0130]最后应说明的是:以上仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种视频封装前的检测方法,其特征在于,包括: 创建视频画面组GOP的内存映射表和音频包的内存映射表; 接收所述G0P,提取所述GOP的序号,并提取所述GOP的总数并保存,将所述GOP的序号写入所述GOP的内存映射表; 接收所述音频包,提取所述音频包的序号,并提取所述所述音频包的总数并保存,将所述音频包的序号写入所述音频包的内存映射表; 判断所述G0P,以及所述音频包是否全部接收成功。
2.根据权利要求1所述的方法,其特征在于,所述将所述GOP的序号写入所述GOP的内存映射表,以及将所述音频包的序号写入所述音频包的内存映射表,包括: 使用下述算法将所述GOP的序号写入所述GOP的内存映射表,以及将所述音频包的序号写入所述音频包的内存映射表:
Int N
Char Table[Μ]
If(Ν%8==0)
Table[Ν/8]=0x011 Table[Ν/8];
If(Ν%8==1)
Table[Ν/8]=0x02|Table[Ν/8];
If(N%8==2)
Table[N/8]=0x04|Table[N/8];
If(N%8==3)
Table[N/8]=0x08|Table[N/8];
If(N%8==4)
Table[N/8]=0x10|Table[N/8];
If(N%8==5)
Table[N/8]=0x20|Table[N/8];
If(N%8==6)
Table[N/8]=0x40|Table[N/8];
If(N%8==7)
Table[N/8]=0x80|Table[N/8]; 其中,N表示所述GOP或音频包的序号; Table M表示所述GOP或音频包的内存映射表。
3.根据权利要求1或2所述的方法,其特征在于,若所述GOP或者所述音频包没有全部接收成功,则获取所述缺失的GOP或者所述缺失的音频包。
4.根据权利要求3所述的方法,其特征在于,所述判断所述GOP是否全部接收成功,包括: 根据所述GOP的总数以及所述GOP的内存映射表,使用特定的算法判断所述GOP是否全部接收成功; 若所述GOP没有全部接收成功,并获取缺失的GOP的序号。
5.根据权利要求4所述的方法,其特征在于,所述使用特定的算法判断所述GOP是否全部接收成功,包括: 使用下述算法判断所述GOP是否全部接收成功,若所述GOP没有全部接收成功,则获取所述缺失的GOP的序号;
Int N)
Char Table[Μ]
For (int i=0;i<N;i++)
{
If(i%8==0)
result=0x01&Table[i/8];
If (i%8==l)
result= (0x02&Table[i/8])>>1;
If(i%8==2)
result= (0x04&Table[i/8])>>2;
If(i%8==3)
result= (0x08&Table[i/8])>>3;
If (i%8==4)
result= (OxlO&Table[i/8])>>4;
If (i%8==5)
result= (0x20&Table[i/8])>>5;
If (i%8==6)
result= (0x40&Table[i/8])>>6;
If(i%8==7)
result= (0x80&Table[i/8])>>7;
if (result==0)
return i;//
}
if(i==N)// 其中,N表示所述GOP的总数; Table M表示所述GOP的内存映射表; i表不所述GOP的序号。
6.根据权利要求3所述的方法,其特征在于,所述判断所述音频包是否全部接收成功,包括: 根据所述音频包的总数以及所述音频包的内存映射表,使用特定的算法判断所述音频包是否全部接收成功; 若所述音频包没有全部接收成功,获取缺失的音频包的序号。
7.根据权利要求6所述的方法,其特征在于,所述使用特定的算法判断所述音频包是否全部接收成功,包括: 使用下述算法判断所述音频包是否全部接收成功,若所述音频包没有全部接收成功,则获取缺失的音频包的序号;
8.一种视频封装前的检测装置,其特征在于,包括: 创建单元,用于创建视频画面组GOP的内存映射表和音频包的内存映射表; GOP内存写入单元,用于接收所述G0P,提取所述GOP的序号,并将所述GOP的序号写入所述GOP的内存映射表; 所述GOP内存写入单元在接收所述GOP之后,还用于提取所述GOP的总数并保存;音频包内存写入单元,用于接收所述音频包,提取所述音频包的序号,并将所述音频包的序号与入所述首频包的内存映射表; 所述音频包内存写入单元在接收所述音频包之后,还用于提取所述音频包的总数并保存; 判断单元,用于判断所述G0P,以及所述音频包是否全部接收成功。
9.根据权利要求8所述的装置,其特征在于,还包括: 获取单元,用于在所述判断单元判断所述GOP或者所述音频包没有全部接收成功时,则获取所述缺失的GOP或者所述缺失的音频包。
【文档编号】H04N21/234GK103647977SQ201310573822
【公开日】2014年3月19日 申请日期:2013年11月13日 优先权日:2013年11月13日
【发明者】张金良 申请人:天脉聚源(北京)传媒科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1