首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MPEG-TS PSI解析

MPEG-TS PSI解析
EN

Stack Overflow用户
提问于 2014-08-06 21:00:56
回答 2查看 3.6K关注 0票数 3

我正在尝试构建EN 300 468中指定的EIT表节。我已经成功地将数据包解析成数据结构(在Java中),并且可以访问每个数据包的有效负载。

我不明白表部分是如何在数据包中被分割的,规范有点混乱/不确定。假设可以通过PID过滤TS数据包流,那么构建这样一个表的过程是什么?

我理解正在设置的payload_unit_start_indicator,表示有效负载字段的第一个字节是指向新部分的第一个字节的指针,这是与有效负载开始时的偏移量吗?

例如,如果我收到一个TS数据包,并将它标识为节的开始,那么我是否将字节读取到数组中,从标头中确定节长度,然后将越来越多的相同PID的TS数据包有效负载填充到中?

谢谢你的阅读,任何建议或帮助都将不胜感激!)

EN

回答 2

Stack Overflow用户

发布于 2014-08-11 07:38:32

这里您可以可视化传输数据包(TP)的结构。

假设可以通过PID过滤TS数据包流,那么构建这样一个表的过程是什么?

好吧,你说得差不多了:

要从流构建一个区段,您必须从相同的PID积累TPs。正如您所猜到的,payload_unit_start_indicator表示一个新部分的开始。然而,这是而不是偏移量。

然后,正如您所说的,您只需继续收集相同PID的TPs的有效负载,直到payloadBytesRead == sectionLength

代码语言:javascript
复制
Transport Packets (188 bytes each):
---------------------------
|Header|     Payload1     |            TP1: payload_unit_start_indicator = 1
---------------------------
^
0x47 (Sync Byte)

---------------------------
|Header|     Payload2     |            TP2: payload_unit_start_indicator = 0
---------------------------

... 

Section (sectionLength):
---------------------------------------    ---------------------
|     Payload1     |     Payload2     | ...|      Payload N    |
---------------------------------------    ---------------------
票数 3
EN

Stack Overflow用户

发布于 2014-12-17 12:04:15

来自en300 468规范:

节可以在TS分组的有效负载开始时开始,但这不是一个要求,因为TS数据包的有效负载中的第一个部分的开始是由pointer_field指示的。

因此,节start实际上是与有效负载的偏移量:

代码语言:javascript
复制
uint8_t* section_start = payload + *payload + 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25170096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档