如何确定mpeg-2程序流文件的视频尺寸
-
08-07-2019 - |
题
如何在mpeg-2 transport 程序流文件中以编程方式查找视频的宽度和高度?
编辑:我正在使用C ++,但我很高兴使用任何语言的示例。 编辑:更正的问题 - 这可能是我询问的程序流
其他提示
如果您使用的是DirectX,则VMRWindowlessControl界面中有一个方法:
piwc->GetNativeVideoSize(&w, &h, NULL, NULL);
或IBasicVideo界面:
pivb->GetVideoSize(&w, &h);
用于MPEG2视频水平&垂直大小可以在视频序列标题中找到(来自视频比特流)。序列标题代码为0x000001B3。下面是一些示例代码。但是,如果在序列扩展头中指定,则不考虑水平/垂直大小扩展。
#define VIDEO_SEQUENCE_HDR 0xB3
#define HOR_SIZE_MASK 0xFFF00000
#define HOR_SIZE_SHIFT 20
#define VER_SIZE_MASK 0x000FFF00
#define VER_SIZE_SHIFT 8
unsigned char *pTmp = tsPacket;
int len = 188;
int horizontal, vertical;
while(len>0 && !horizontal && !vertical)
{
if(*pTmp == 0 && *(pTmp+1) == 0
&& *(pTmp+2)== 0x01 && *(pTmp+3) == 0xB3 && (len-1) >0)
{
unsigned int *pHdr = (unsigned int *)pTmp;
pHdr++ ;
unsigned int secondByte = ntohl(*pHdr);
horizontal = (secondByte & HOR_SIZE_MASK) >> HOR_SIZE_SHIFT;
vertical = (secondByte & VER_SIZE_MASK) >> VER_SIZE_SHIFT;
break;
}
pTmp++;
len--;
}
你还没说过你想用什么语言,所以我怀疑你会得到任何代码样本。
查看以下链接。第一个描述了MPEG-2文件格式,另一个是通过RTP传输MPEG的RFC。
http:// www .fh-friedberg.de / fachbereiche / E2 /电信劳动/津凯/ MK / mpeg2beg / beginnzi.htm
哈米什姆说,亚当罗森菲尔德的回答是他所需要的。这让我想知道问题的准确性。 MPEG传输流不 具有 视频序列标头。该标题位于MPEG节目流中。
我没有答案。我只是希望某人的回答是正确的,因为我需要一个。
不隶属于 StackOverflow