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

如何确定mpeg-2节目流文件的视频尺寸

  •  3
  • hamishmcn  · 技术社区  · 17 年前

    如何以编程方式找出mpeg-2中视频的宽度和高度 运输

    编辑:我使用C++,但我很高兴在任何语言的例子。 编辑:更正问题-可能是我问的程序流

    5 回复  |  直到 15 年前
        1
  •  3
  •   Adam Rosenfield    17 年前

    请检查源代码,以便 libmpeg2 ,一个F/OSS MPEG2解码器。看起来宽度和高度是在中设置的 mpeg2_header_sequence() 作用于 header.c MPlayer )并附加一个调试器,以便更精确地查看它正在执行的操作。

        2
  •  1
  •   CompaniaHill CompaniaHill    17 年前

    如果您使用的是DirectX,则VMRWindowlessControl界面中有一个方法:

    piwc->GetNativeVideoSize(&w, &h, NULL, NULL);
    

    或视频接口:

    pivb->GetVideoSize(&w, &h);
    
        3
  •  1
  •   Andrew    16 年前

    #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--;
        }
    
        4
  •  0
  •   Dodger    15 年前

    hamishmcn说Adam Rosenfield的答案正是他所需要的。这使我怀疑这个问题的准确性。MPEG传输流不需要

    我没有答案。我只是希望有人的答案是正确的,因为我需要一个。