Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Video streaming 来自MPEG-2传输流的视频大小(水平和垂直)_Video Streaming_Mpeg_Mpeg2 Ts - Fatal编程技术网

Video streaming 来自MPEG-2传输流的视频大小(水平和垂直)

Video streaming 来自MPEG-2传输流的视频大小(水平和垂直),video-streaming,mpeg,mpeg2-ts,Video Streaming,Mpeg,Mpeg2 Ts,我需要知道如何从MPEG传输流(TS)中获取高度和宽度以及任何其他描述性数据 在这个答案出现之前:我很清楚视频序列头(00B3)。这是MPEG节目流(即MPEG文件)规范的一部分,而不是MPEG传输流 如果我将一个传输流保存到一个.ts文件中,我可以从ffmpeg中获取此信息,但我需要能够在ffmpeg不可用的环境中独立于ffmpeg进行此操作。因此,我需要手动解析文件中的数据,除了MPEG-TS中的时间戳(切片开始)之外,我似乎找不到任何相关元数据 谢谢 恐怕您必须检查ISO 13818-1(

我需要知道如何从MPEG传输流(TS)中获取高度和宽度以及任何其他描述性数据

在这个答案出现之前:我很清楚视频序列头(00B3)。这是MPEG节目流(即MPEG文件)规范的一部分,而不是MPEG传输流

如果我将一个传输流保存到一个.ts文件中,我可以从ffmpeg中获取此信息,但我需要能够在ffmpeg不可用的环境中独立于ffmpeg进行此操作。因此,我需要手动解析文件中的数据,除了MPEG-TS中的时间戳(切片开始)之外,我似乎找不到任何相关元数据


谢谢

恐怕您必须检查ISO 13818-1(也称为H.222)并了解一些有关传输流数据包、PID过滤和PES数据包的信息

流被分为多个数据包。每个数据包(通常)长188字节。数据包头包含PID(数据包ID),它允许您只过滤您感兴趣的数据包

这些数据包构成PES数据包,其中包含MPEG-2数据+元数据(例如定时数据)。在找出视频的宽度和高度之前,您需要构建并解析PES数据包

你怎么知道你对哪种PID感兴趣?为此,你必须阅读关于PAT和PMT的文章。PAT告诉您如何获取PMT,PMT告诉您哪些PID包含MPEG-2信息


上述文件(详细)描述了所有这些。但是网上有很多教程和解释。例如,但是还有很多其他的。视频序列头(00 00 01 B3)实际上是描述基本视频比特流的ISO/IEC 13818-2规范的一部分。所以传输流也将包含这个头

这里的问题是提取此标题内容。您不能仅仅找到这个开始代码并使用它后面的字节。这可能是一项相当复杂的任务,因为: 1.报头内容可以分为两个PES或传输流数据包 2.如果传输流不仅包含视频流,则可以在某些音频或二进制数据中找到此字节序列。

视频大小不是传输流的属性。这是基本视频流本身的属性。传输流或PES数据包不包含任何标头


为了提取分辨率(宽度x高度),您必须识别PES start(使用PUSI)数据包,然后开始解析es报头。您需要提取ISO/IEC 13818第2部分(视频)的序列头部分,这将为您提供答案。检查此项以便快速参考

答案是相切的方式@在Dipan中,问题是如何手动解析数据文件(MPEG-2传输流文件)。如果您不知道TS数据包、分区、PAT和PMT,您如何才能获得PES数据包?如果有的话,您的答案不涉及解析文件,而是假设OP有一个PES数据包流。