0

我正在寻找建议以及我想做的事情是否可行。

我被要求创建类似于 ID3 mp3 标签的东西,可以与 MPEG 2/MPEG-TS 视频文件一起使用。因为我是一个粗鲁的人,所以我只想在文件本身中转储某种 XML 结构。但是,这会导致尝试解码/播放视频文件的应用程序出现问题,因为应用程序不希望文件中包含 XML/ASCII 数据。

我不确定是否有可能有某种 END OF FILE '命令'可以修改为 MPEG 文件的结尾,我可以在那部分之后转储我的 XML。

兼容性方面,我只需要避免视频文件“破坏”正在阅读它的任何商业应用程序。标签信息将由我尚未编写的应用程序解析。

有任何想法吗?或者我的建议是不可能的?

谢谢。

4

2 回答 2

1

任何正在解码 MPEG2-TS 文件的程序都会一遍又一遍地寻找 188 字节的数据包。如果查看十六进制,您将看到一个 0x47 字节,它是每 188 个字节的每个数据包的同步字节(也是第一个字节)。这就是为什么将 XML 数据添加到文件中会破坏任何解码器的原因。

您可以做的是添加自己的数据包,或者通常在 MPEG2-TS 文件的开头劫持空 PID 数据包。不幸的是,要正确执行此操作,您可能希望此数据位于可能不存在的网络信息表中。这意味着您可能必须在 PMT 中添加对 NIT 的引用。所有这些都需要传输流的高级知识和解析/写入能力。

您可能可以在文件开头添加数据包而无需调整时钟参考。或者只是劫持现有的 null-PID 数据包(无需更改时钟参考)。然后在您的新数据包中使用可能不会像 8190 那样使用的数据包 ID。在不修改 PMT 以引用 NIT 的情况下执行此操作将不是完全有效的 MPEG2-TS,因为未引用的 PID,但可能仍然可以在大多数商业解码器。

我敢肯定,其中很多都没有意义,因为您只是想添加一些标签信息而不熟悉 MPEG2-TS。但是定义确切格式的标准是ISO/IEC 13818-1。当心这是相当繁重的阅读。如果你想变得更轻(更便宜),你可能只需要wikipedia就可以了。

于 2011-09-02T17:17:19.860 回答
1

有一种直接的方法可以做到这一点 MPEG 2/MPEG-TS

基本上,您可以添加自定义描述符和/或自定义表(甚至自定义流类型),它们在流中具有自己的 PID。它们不会在视频中,也不会破坏工作应用程序,但可以阅读

为了让您了解,图文电视、VBI 数据、Cue-tone 信号、EPG、DSC-CC 命令(甚至有些人谈论使用 MPEG 系统传输一般数据)都是MPEG-T上的自定义数据的示例。

详细阅读 MPEG2-ISO 13818-1(有一个关于自定义表格的部分)并细化您的问题。

于 2011-12-28T13:41:31.937 回答