代码之家  ›  专栏  ›  技术社区  ›  user472155

传输流和MPEG文件格式

  •  6
  • user472155  · 技术社区  · 15 年前

    我想把一个TS文件转换成MPEG文件。有没有描述这一过程的文件? 我知道TS体系结构,但不知道MPEG的文件体系结构。任何有关这方面的信息都将非常感谢。

    谢谢您。

    3 回复  |  直到 9 年前
        1
  •  15
  •   Jason B    15 年前

    您可能想要做的是将MPEG-TS(传输流)转换为MPEG-PS(程序流)。mpeg-ps是标准.mpg文件的格式,也是DVD视频使用的格式。

    您可能应该掌握ISO/IEC 13818-1标准。本标准包含所有MPEG-TS和MPEG-PS容器的详细信息(不包括ISO/IEC 13818-2中包含的编码视频)。

    幸运的是,这种转换相当简单,因为大部分MPEG-PS结构都包含在MPEG-TS格式中。传输流包含一系列188字节的数据包,每个数据包都有一个头。PES(程序基本流)包包含在包有效负载中。PES数据包包含实际的视频或音频负载。一个PES包可以是任意长度的,并且大多数时候它们跨越几个TS包。从传输流中分离PES数据包实际上只需要删除TS头并正确连接有效负载数据以形成PES数据包。

    一旦你有了一个PES包流,你将把它们复用成标准中规定的程序流格式。因此,基本上,您不需要解析PES包或其内容,只需将它们从一种格式中提取出来并插入到另一种格式中即可。

    尽管转换相当简单,但它仍然需要相当多的工作,因为您需要非常熟悉容器标准,并仔细分析位流以使事情正确。因此,尽管我说转换很简单,但与其他格式转换相比,这只是一个简单的概念,在这种情况下,您可能需要深入了解视频数据。

        2
  •  10
  •   Dipan Mehta    14 年前

    我正在尝试添加一些有用的资源。

    以下是一些解释传输和程序流以及相关打包结构的详细信息的文档。

    1. 这就解释了传输流和程序流之间的区别。 http://www.vbrick.com/docs/VB_WhitePaper_TransportStreamVSProgramStream_rd2.pdf

    2. 这解释了MPEG的观点,也包括打包。 http://www.img.lx.it.pt/~fp/cav/Additional_material/MPEG2_overview.pdf

    3. 这解释了传输流的其他方面,即如何使用表等选择程序。 http://www.bitrouter.com/pdf/tutorial-psip.pdf

    基本上,您需要将传输流分解为PES包(连同时间戳),然后应用程序流打包过程。

    关键的是,当您对ps流进行多路复用时,如何保持ps流中数据包的相对间隔和时间。因此,您必须在PES包中保留PTS/DTS时间戳。

    我在这里列出了一些工具——这是您工作的一部分很好的例子——而且它们更为人所知是符合MPEG2系统标准的。

    1. t工具( http://tstools.berlios.de/ )
    2. MPLEX(来自MJPEGTOOLS)
    3. dvb mplex(libdvb的一部分, http://www.metzlerbros.org/dvb/ )
    4. dvb replx(也是libdvb的一部分, http://freshmeat.net/projects/dvb-replex/ 或 http://www.metzlerbros.org/dvb/ )
    5. 阿维德穆斯。 http://avidemux.sourceforge.net/

    另一个开始学习的好方法是 Gstreamer 如果您想快速了解更广泛的流程,可以使用插件框架。

        3
  •  2
  •   Steve Townsend    15 年前

    FFMPEG 可用于从TS转换为MPEG。更多信息 here .