c++ - 传输流和 mpeg 文件格式

标签 c++ video video-streaming

我想将 TS 文件转换为 mpeg 文件。有没有描述这个过程的文件? 我知道TS架构,但是我不知道mpeg的文件架构。非常感谢有关此主题的任何信息。

谢谢。

最佳答案

您可能想要做的是从 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 字节的数据包,每个数据包都有一个 header 。 PES(节目基本流)数据包包含在数据包有效载荷中。 PES 数据包包含实际的视频或音频负载。一个 PES 数据包可以是任意长度,并且大多数时候它们跨越多个 TS 数据包。从传输流中解复用 PES 数据包实际上只涉及删除 TS header 并正确连接有效负载数据以形成 PES 数据包。

一旦你有了 PES 数据包流,你就会将它们多路复用到标准中规定的节目流格式中。所以基本上,您不需要解析 PES 数据包或它们的内容,您可以将它们从一种格式中提取出来,然后插入到另一种格式中。

尽管转换相当简单,但它仍然需要大量的工作,因为您需要非常熟悉容器标准并仔 segmentation 析比特流才能正确处理。因此,尽管我说转换很简单,但这只是在与其他格式转换相比简单的意义上,在其他格式转换中您可能需要进一步深入挖掘视频数据。

关于c++ - 传输流和 mpeg 文件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4145575/

相关文章:

c++ - 使用 glm 沿四元数平移相机

video - ffmpeg vs mediainfo 获取缩略图和元数据

Javascript - 有没有办法导出特定的视频部分并加入它们?

javascript - 是否可以每隔一段时间暂停视频,然后请求验证码继续播放?

nginx - 接收 HLS 流并重播

iphone - 如何将视频传输到 iPhone/黑莓?

c++ - Excel 以外的 Excel RTD(实时数据)客户端?

c++ - 使用 Qt WebEngineView 在特定页面打开 PDF

C++ 预处理器条件参数

android - VideoView内的YouTube RTSP URL播放-低质量