各位,用Delphi编程如何获得视频宽高

解决方案 »

  1.   

     CaptureSave.Rate := 15;
      hr := SampleGrabber.SampleGrabber.GetConnectedMediaType(MediaType);
      if hr = S_OK then
      begin
        if IsEqualGUID(MediaType.majortype, MEDIATYPE_Video) then
        begin
          if IsEqualGUID(MediaType.formattype, FORMAT_VideoInfo) then
          begin
            vih1 := PVideoInfoHeader(MediaType.pbFormat)^;        if vih1.dwBitRate <> 0 then
            begin
              CaptureSave.Rate := ((vih1.dwBitRate div vih1.bmiHeader.biWidth) div vih1.bmiHeader.biHeight) div vih1.bmiHeader.biBitCount;
            end;
          end
          else if IsEqualGUID(MediaType.formattype, FORMAT_VideoInfo2) then
          begin
            vih2 := PVideoInfoHeader2(MediaType.pbFormat)^;
            if vih2.dwBitRate <> 0 then
            begin
              CaptureSave.Rate := vih2.dwBitRate div vih2.bmiHeader.biWidth
                div vih2.bmiHeader.biHeight div vih2.bmiHeader.biBitCount;
            end;
          end;
        end;
      end;以前使用的一个办法,每一帧都可以转换为一张bmp图片,得到这张图片的宽和高就行了。
      

  2.   

    我用的是DirectShow,可能和你不一样的。