一种基于Java语言实现TS包PID修改的方法与流程

文档序号:12694060阅读:763来源:国知局
一种基于Java语言实现TS包PID修改的方法与流程

本发明涉及有线电视TS传输协议技术领域,具体地说是一种基于Java语言实现TS包PID修改的方法。



背景技术:

目前做TS流相关的研发测试,会时常用到TS流拼接、合成音视频TS流,难免会遇到不同TS流的合成之后有不同的数据之间存在着相同的PID的问题,因此,目前一般的方法是在TS流拼接、合成之前,查看每个TS流,保证没有相同的PID进行冲突,若有冲突的,只能换TS流进行拼接合成。

对于用户需求,在每次拼接不同的TS流时,需要考虑TS流中PID的冲突问题,若有PID的冲突,则还需要重新找新的TS流做拼接合成,极大的浪费时间。

另外,用视频转换工具把其他格式的视频转为TS格式的视频时,每次转换后的音视频PID均为固定的,因此,无法做到将多个其他格式的视频转换为TS格式视频时,使每一个视频的音视频PID不同,从而不能合成多视频的TS流。

如果有一种方法能够实现修改替换TS流中的PID,那么则很好的解决了上述问题,方便简洁,节省了大量时间。

基于此,本发明提供了一种基于Java语言实现TS包PID修改的方法。



技术实现要素:

本发明的技术任务是针对以上不足之处,提供一种基于Java语言实现TS包PID修改的方法。

一种基于Java语言实现TS包PID修改的方法,其实现过程为:

首先自定义一组数据的PID,该PID包括音视频数据、TS流表格数据,用于测试需要;

然后使用JAVA语言实现,对每个TS包进行检索,当遇到需要替换的PID时,则将此PID替换成自定义的PID。

所述TS包的标准长度为188字节,且包头第一字节为0x47,基于此,对每个TS包进行检索前先查找TS包包头:在每个TS包分析PID数据之前,首先查看TS包第一个字节是否为0x47,若是,则继续分析,若不是,则分析下一个字节,直到字节为0x47且第N*188+1个字节仍为0x47,这里的N≥10。

查找到TS包包头后,进入计算PID的步骤:首先根据有线电视TS传输流规范TS包头的定义,找到PID所在的相应的数据位置,计算PID,计算出TS包的PID后,再进行自定义PID数据的替换。

在进行自定义PID数据的替换时,首先对比要替换的PID,若相同,则将该位置的数据替换成自定义的PID数据;若不相同,则继续找到下个TS包,分析下个TS包的PID数据,每个TS包依次分析,直到码流数据结束。

进行自定义PID数据替换的PID数据的位置为第12-25bit,即将此位置的数据替换成自定义的PID数据。

本发明的一种基于Java语言实现TS包PID修改的方法和现有技术相比,具有以下有益效果:

本发明提供的一种基于Java语言实现TS包PID修改的方法,解决拼接TS流后PID冲突的问题,特别是,当使用视频转换工具将其他格式的视频转化为TS视频时,可以自己设置转换后的音视频,方便于研发的调试与测试,节省大量时间,实用性强,适用范围广泛,具有很好的推广应用价值。

附图说明

附图1为本发明的实现流程图。

附图2为本发明中TS包头的定义代码示意表。

具体实施方式

下面结合具体实施例对本发明作进一步说明。

如附图1所示,一种基于Java语言实现TS包PID修改的方法,本发明是基于Java语言实现的TS流TS包PID的修改方法,可将一段TS流中任意的一个PID替换成其他指定的PID。解决拼接TS流后PID冲突的问题,特别是,当使用视频转换工具将其他格式的视频转化为TS视频时,可以自己设置转换后的音视频,方便于研发的调试与测试。

其实现过程为:

首先自定义一组数据的PID,该PID包括音视频数据,TS流各种表格数据等等。满足我们研发测试的需要;

然后使用JAVA语言实现,对每个TS包进行检索,当遇到需要替换的PID时,则将此PID替换成自定义的PID。

实现修改替换TS流中的PID,解决拼接合成时,不同PID冲突的问题。

所述TS包的标准长度为188字节,且包头第一字节为0x47,基于此,对每个TS包进行检索前先查找TS包包头:在每个TS包分析PID数据之前,首先查看TS包第一个字节是否为0x47,若是,则继续分析,若不是,则分析下一个字节,直到字节为0x47且第N*188+1个字节仍为0x47,这里的N≥10。

查找到TS包包头后,进入计算PID的步骤:首先根据有线电视TS传输流规范TS包头的定义,找到PID所在的相应的数据位置,计算PID,计算出TS包的PID后,再进行自定义PID数据的替换。

在进行自定义PID数据的替换时,首先对比要替换的PID,若相同,则将该位置的数据替换成自定义的PID数据;若不相同,则继续找到下个TS包,分析下个TS包的PID数据,每个TS包依次分析,直到码流数据结束。

进行自定义PID数据替换的PID数据的位置为第12-25bit,即将此位置的数据替换成自定义的PID数据。

根据有线电视TS传输流规范TS包头的定义查找,定义如附图2所示。

根据上述包头的定义,表示PID的数据位置为第12-25bit。可以将此位置的数据,替换成我们自己定义好的PID数据。

通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。

除说明书所述的技术特征外,均为本专业技术人员的已知技术。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1