发明内容
本发明提出一种基于PID重构的数字电视节目接收处理的方法,通过基于PID重构对数字电视节目的信源进行软加密处理,从而可以从根本上杜绝盗版的电视接收用户,且本发明公开的方案简单易行。
本发明采用如下技术方案来实现:一种基于PID重构的数字电视节目处理方法,若为ES_PID或PCR_PID重构,其包括步骤:
获取已经PID重构的传输流,且从传输流中解析PAT,得到各路节目对应的PMT的PID;
根据各路节目对应的PMT的PID,解析该PID对应的数据包,得到各路节目所包含的ES的PID和PCR的PID,且从PID重构描述符中获取重构类型、位置标识符和重构函数标识符的信息;
根据重构函数标识符获取表示PMT描述的PID与实际PID之间关系的重构函数,利用重构函数重构传输流中ES或PCR的实际PID;
根据获取的节目信息进行播放处理。
若为PMT_PID重构,其包括步骤:
获取已经PID重构的传输流,且从传输流中解析PAT,得到各路节目对应的PMT的PID;
从PID重构描述符中获取重构类型、位置标识符和重构函数标识符的信息;
根据重构函数标识符获取表示PAT描述的PID与实际PID之间关系的重构函数,利用重构函数重构PMT_PID,即为实际的PMT_PID;
解析该PMT_PID的数据包,获取ES_PID和PCR_PID;
根据获取的节目信息进行播放处理。
其中,PID重构描述符为设置在NIT、SDT或PMT中的一个私有描述符,且该私有描述符使用描述符标签来区别。
其中,PID重构描述符中包含:用于在不同取值时标识PID重构描述符位置的位置标识符;用于在不同取值时标识PID重构的重构类型;用于标识PID重构采用的是哪一个重构函数的重构函数标识符。
其中,重构类型至少在下列情形下具有对应不同的取值:标识全部节目PMT的PID一起重构采用的重构函数;标识每一个节目PMT的PID分别重构采用的重构函数;标识所有节目的所有ES的PID一起重构采用的重构函数;标识某节目全部的ES的PID一起重构采用的重构函数;标识每一个ES的PID分别重构采用的重构函数;标识所有节目PCR的PID一起重构采用的重构函数;标识每个节目PCR的PID分别重构采用的重构函数。
其中,位置标识符至少在NIT、SDT或PMT中描述PID重构描述符时具有对应不同的取值。
其中,重构函数标识符在不同取值下分别对应其中一个预设的重构函数。
其中,在已经PID重构的传输流中,各个PID均不相同。
其中,传输流为经过软加密处理(PID重构)的传输流。
其中,已经PID重构的传输流是由信源提供端进行PID重构处理。
其中,PID重构至少包括下述其中一种重构方式:对全部节目PMT的PID一起重构、对每一个节目PMT的PID分别重构、对全部节目的所有ES的PID一起重构、对某一个节目全部的ES的PID一起重构、对每一个ES的PID分别重构、对所有节目的PCR的PID一起重构、或对每个节目PCR的PID分别重构。
与现有技术相比,本发明具有如下有益效果:
采用本发明基于PID重构的数字电视节目软加密的方法可以制作出客户化的专用TS流,只有通过特定的和码流相对应的搜索模式才可以正常搜索、播放节目,且重构函数是信源提供者可以根据自己的需要修改或重新定义,从而达到了对电视节目软加密保护的目的。因此,本发明采用最简便易行的方法可以杜绝盗版电视接收用户,从而为电视广播行业创造一个良好的竞争环境;本发明适用任何信道编码方式的数字电视系统,同时也适用于未加密节目或加密节目。
具体实施方式
本发明提供一种简便易行的方案:在节目信源提供端,重构PID;在电视接收设备的终端,相应变化节目搜索模式,从而使基于PID重构的TS流具有客户化专用的特征,PID重构后的TS流区别于传统意义上的TS流。因此,节目搜索方式也不是通常固定的模式,而是需要根据PID重构的方法的不同而采用不同节目搜索方式,同样具有客户化专用的特征。因此,本发明提供的方案具有节目保护的功能,从而达到数字电视节目的软加密的作用。
本发明是通过在网络信息表(Network Information Table,NIT)、业务描述表(ServiceDescription Table,SDT)或节目映射表(Program Map Table,PMT)的相应位置添加一个私有描述符(或称之为PID重构描述符)。通过该私有描述符给出PID重构类型并且标识用于重构PID的重构函数。
在本发明中,节目关联表(Program Association Table,PAT)描述的传输流中每个节目对应PMT所在分组的PID和实际码流中PMT_PID一般不相等,或者,PMT里面描述的基本码流(Elementary Stream,ES)的PID(记为ES_PID)或节目时钟参考(Program Clock Preference,PCR)的PID和实际传输流中ES的PID(记为ES_PID)或PCR的PID(记为PCR_PID)一般不相等,而是存在某种函数关系,这种函数称为重构函数。
本发明对PID重构描述符的定义如下:
Reconfigure_PID_descriptor
{
descriptor_tag //8bit,在此为0×FE
descriptor_length //8bit,描述符长度
Reconfigure_type //4bit,可以为0×00-0×0F
position_identifier //3bit,可以为0×00-0×07
reserved //1bit,保留
if((Reconfigure_type=0×00&&position_identifier=0×00)
||(Reconfigure_type=0×01&&position-identifier=0×01)
||(Reconfigure_type=0×02&&position identifier=0×00)
||(Reconfigure_type=0×03&&(position_identifier=0×01||position_identifier=0×02))
||(Reconfigure_type=0×04&&position_identifier=0×03)
||(Reconfigure_type=0×05&&position_identifier=0×00)
||(Reconfigure_type=0×06&&(positior_identifier=0×01||position_identifier=0×02)))//结构1
{Reconfigure_function_indentifier //5bit,可以为0×00-0×1F
future_use //3bit,保留扩展
}
if((Reconfigure_type=0×01&&position_identifier=0×00)
||(Reconfigure_type=0×03&&position_identifier=0×00)
||(Reconfigure_type=0×06&&position_identifier=0×00)) //结构2
{for(i=0;i<N;i++)
{Service_id //16bit,对应program_number
Reconfigure_function_indentifier //5bit,可以为0×00-0×1F
future_use //3bit,保留扩展
}}}
根据实际需要,PID重构描述符可以添加在NIT的TS流描述、SDT的业务描述、PMT节目信息描述或PMT基本码流信息描述之中,用于给出不同类型的PID重构以及标识该PID重构采用的重构函数。例如,在一个具体应用实例中的具体对应关系见下表1所示:
表1
对上述PID重构描述符中采用的各字段说明:
descriptor tag:描述符标签,8bit字段,在此定义为0×FE(在SI规范里面,给出0×80-0×FE为用户自行定义的私有描述符标签),表示该描述符为pID重构描述符,是PID重构描述符的唯一标识。
descriptor_length:描述符长度,8bit字段,用于描述该字节之后描述符的长度。
Reconfigure_type:重构类型,4bit字段(取值范围0×00-0×0F),用于给出PID重构类型。
position_identifier:位置标识符,3bit字段(取值范围0×00-0×07),用于标识PID重构描述符的位置。Reconfigure_type和position_identifier唯一标识了PID重构的类型以及PID重构描述符的结构(PID重构描述符根据Reconfigure_type和position_identifier取值的组合不同,有两种结构,具体见PID重构描述符的定义)。其中,在一个具体应用实例中,Reconfigure_type值和类型、position_identifier值和描述符位置的对应关系如下表2所示:
表2
reserved:保留,1bit字段,保留使用。
Service_id:业务标识符,16bit字段,用于标识业务,对应于program_number。
Reconfigure_function_identifier:重构函数标识符,5bit字段(取值范围0×00-0×1F),用于标识PID重构采用的是哪一个函数。该字段5bit,可以标识32种不同的重构函数。其中,重构函数用于给出PAT或PMT里面描述的PID和实际码流中PID的关系。
future_use:未来使用,3bit字段,用于未来扩展功能。
下面以某个节目全部的ES_PID一起重构为例说明其实现过程。假设在PMT节目信息描述里面添加PID重构描述符。在这种情况下,Reconfigure_type为0×03,position_identifier为0×02。我们假定PID重构描述符里面Reconfigure_function_identifier标识的重构函数为Y=X+1。其中,X为PMT里面描述的各路ES码流的PID,Y为重构之后各路ES码流的PID,也为实际码流中该节目各路ES码流的PID。如下表3给出某节目PMT里面描述的ES的PID,而表4给出实际码流中该节目ES的PID:
ES |
PID |
Video |
0×41 |
Audio1 |
0×43 |
Audio2 |
0×45 |
表3
ES |
PID |
Video |
0×42 |
Audio1 |
0×44 |
Audio2 |
0×46 |
表4
这样,通过PID重构将卫星电视的信源编码作了改变,如果电视接收设备按照传统模式进行节目搜索,从PAT或PMT里面获取的相应的PID就是一种虚假的信息,从而不能找到节目相应的PMT或节目的ES或PCR,也就不能搜索到节目或无法进行节目播放。
另外,有几点需要注意:
(1)重构函数可以由信源提供端根据自己的需要而定,并且把它作为和电视接收设备提供商之间的一种机密。并且,经过PID重构函数重构之后的PID必须是可用的PID。
(2)如果为PMT_PID重构(所有节目或每一个节目),那么实际码流中PMT_PID不是PAT里面描述的相应节目的PMT_PID,而是该PID经过重构函数重构之后的,并且实际码流中任何PID都不能和PAT里面所描述的PID相等;如果为所有节目所有ES_PID一起重构或某节目全部的ES_PID一起重构或每一个ES_PID分别重构或PCR_PID重构(所有节目或每一个节目),那么实际码流中ES_PID或PCR_PID不是该节目PMT里面所描述的ES_PID或PCR_PID,而是该ES_PID或PCR_PID经过重构函数重构之后的,并且实际码流中任何PID都不能和PMT里面所描述的PID相等。
(3)同一路TS流里面PID不能有重复。
将经过上述处理的TS流调制到中星9号的四个频点(11840MHz、11880MHz、11920MHz、11960MHz)上;然后,用户终端的电视接收设备的节目搜索方法也需要相应改变。
如图1所示,电视接收设备的节目搜索包括以下步骤:
步骤S11:锁频和解调处理。对调制的TS流的频率进行锁定,并对调制的TS流作解调处理,得到基带TS。
步骤S12:从基带TS中解析PAT,即解析PID为0的数据包,得到该TS流里面所包含的各路节目对应的PMT的PID(记为PMT_PID)。
步骤S13:进一步解析PMT,即解析PID为PMT_PID的TS数据包,得到该节目所包含的ES的PID(ES_PID);并且从描述符标签(descriptor_tag)为0×FE的描述符里获取重构类型(Reconfigure_type)、位置标识符(position_identifier)和重构函数标识符(Reconfigure_function_identifier)的信息。
基于上述描述的应用实例,从PID重构描述符里面获取Reconfigure_type、position_identifier和Reconfigure_function_identifier的方法如下:PID重构描述符中descriptor_tag(描述符标签,1个字节,为0×FE)之后,是1个字节的descriptor_length(描述符长度),此后是描述符数据,取该数据第一个字节(0-7bit)的前4bit(即0-3bit),即为Reconfigure_type,Reconfigure_type的类型具体内容见表2;取Reconfigure_type(4bit)之后的3bit(即4-6bit),即为position_identifier(为0×02)。Reconfigure_type(为0×03)给出了PID重构的类型,0×03表明为某节目全部的ES_PID一起重构,position_identifier(这里为0×02)给出了PID重构描述符的位置,0×02表明PID重构描述符出现在PMT节目信息描述里面。Reconfigure_type和position_identifier组合,可以给出PID重构类型和PID重构描述符的结构,在这里为PID重构描述符定义里的“结构1”,在“结构1”中,descriptor_length(描述符长度)后面有2个字节的描述符数据。取第2个字节(0-7bit)的前5bit(0-4bit)即为Reconfigure_function_identifier。
该PID重构描述符中,descriptor_tag为0×FE的标签标识一个自定义的私有描述符。Reconfigure_type用于给出PID重构的类型(根据上述表2,目前的定义中有7种:全部节目PMT_PID一起重构、每一个节目PMT_PID分别重构、所有节目的所有ES_PID一起重构、某节目全部的ES_PID一起重构、每一个ES_PID分别重构、所有节目PCR_PID一起重构、每个节目PCR_PID分别重构。根据需要对其功能类型还可以进行扩展)。position_identifier用于给出PID重构描述符的位置(可以是NIT的TS流描述、SDT的业务描述、PMT节目信息描述、PMT基本流信息描述)。Reconfigure_function_identifier用于标识PID重构采用的是哪一种重构函数。
其中,Reconfigure_function_identifier的处理,采用的是switch语句,具体处理方法见步骤S14。
步骤S14:重构PID的步骤。根据从PID重构描述符里面获取的Reconfigure_function_identifier获取重构函数。重构函数的获取是通过switch语句来实现的,具体实现如下:
Switch(Reconfigure_function_identifier)
{
Case 0×00:Function0(PID);break;//Reconfigure_function_identifier为0×00时,调用重构函数0
Case 0×01:Functionl(PID);break;//Reconfigure_function_identifier为0×01时,调用重构函数1
Case 0×1F:Function31(PID);break;//Reconfigure_function_identifier为0×1F时,调用重构函数31
default:break;
}
说明:其中,Function0到Function31为PID重构函数,用于给出PAT或PMT里面描述的PID和实际传输码流中PID的关系。这些重构函数可以由广播者根据自己的需要而定。这样,未经授权许可的电视接收设备提供商即使知道了这项技术,却没有Reconfigure_function_identifier和广播者定义的重构函数Function的对应关系,也就不能正常的搜索播放节目,从而达到基于PID重构的数字电视节目软加密的目的。
针对前述描述应用实例中,重构函数为Y=X+1。其中,X为PMT里面描述的各路ES码流的PID,如表3所示;Y为重构之后,各路ES码流的PID(ES_PID),也为实际码流中该节目各路ES码流的PID(ES_PID),如表4所示。从该节目PMT里面获取的ES_PID用重构函数(这里为Y=X+1)进行处理,这里是加1处理,就可以得到重构后的PID,也就是实际码流中该节目各路ES的PID。
步骤S15:存储节目信息。将频点、TS_ID、Service_ID、PMT_PID、PCR_PID、重构后的ES_PID等信息存储到Flash存储器中相应的节目数据区。
步骤S16:播放节目。根据FLASH存储器中的节目数据区里面的频点、PID等相关信息(由于存储在节目区里面的PID是经过重构之后的,所以是码流中实际的PID,而不是虚假的PID),电视接收设备就可以对TS流进行解码处理,并输出电视节目的音视频信号到电视机。
图2为本发明第2实施例的流程示意图。其为已经PMT_PID重构的TS处理流程,其处理步骤如下:
步骤S21:对已经PID重构的传输流进行锁频解调处理,得到基带TS。
步骤S22:从传输流中解析PAT,得到各路节目对应的PMT的PID,且从PID重构描述符中获取重构类型、位置标识符和重构函数标识符的信息。
步骤S23:根据重构函数标识符获取表示PAT描述的PID与实际PID之间关系的重构函数,利用重构函数重构PMT_PID,即为实际的PMT_PID。
步骤S24:解析该PMT_PID的数据包,获取ES_PID和PCR_PID。
步骤S25:存储节目信息。
步骤S26:根据获取的节目信息进行播放处理。
上述图1所示的第1实施例只是以某个节目全部的ES_PID一起重构为例来详细说明该本发明的技术方案;而图2所示的第2实施例简单介绍了经过PMT_PID重构的TS的处理流程。实际上,可以分别对全部节目PMT_PID、每一个节目PMT_PID、所有节目的所有ES_PID、某节目全部的ES_PID、每一个ES_PID、所有节目PCR_PID、每个节目PCR_PID进行重构,也可以几种PID重构方式相结合,相当于多重加密处理,在此不再详述。
这样,经过正规招标的直播星机顶盒厂家可以按照上述方案修改机顶盒软件。然后通过卫星转发器转发数据对软件进行升级,就可以搜索并正常播放经过PID重构的TS流里面的节目。而盗版的机顶盒不能通过卫星转发器转发数据升级软件(因为广电总局控制了信源),从而不能正常的搜索、播放经过上述处理的TS流中的节目。也就做到了基于PID重构的数字电视节目软加密。
综上,本发明通过构造一种PID分配不一定符合MPEG-2规范的TS流,这种TS流具有客户化专用的特征,只有按照特定的和码流相对应的模式搜索节目,才可以获取节目信息,并正常解码显示。且用于PID重构的重构函数是信源提供者可以根据自己的需要修改或重新定义的,PID重构的方式也可以根据实际需要任意组合,从而达到了对电视节目软加密保护的目的。
因此,本发明采用最简便易行的方法可以杜绝盗版电视接收用户,从而为电视广播行业创造一个良好的竞争环境;本发明适用任何信道编码方式的数字电视系统,同时也适用于未加密节目或加密节目。