• 修改捕获图像的大小 directshow


    ok,谢谢陆兄的指点,我也是这么做的,见代码,其中pAsfConfig是从asfwriter指针获取的. 
    IWMProfile *ppProfile; 
    pAsfConfig->GetCurrentProfile (&ppProfile); 

    IWMStreamConfig* ppConfig; 
    ppProfile->GetStream(0,&ppConfig); //获取视频流的 
    /////设置视频流的属性 
    IWMMediaProps *pMediaProps; 
    ppConfig->QueryInterface(IID_IWMMediaProps,(void**)(&pMediaProps)); 
    WM_MEDIA_TYPE mediaType; 
    DWORD bufsize; 
    pMediaProps->GetMediaType(NULL,&bufsize); 
    pMediaProps->GetMediaType(&mediaType,&bufsize); 
    //////////////////////// 
    VIDEOINFOHEADER *pVih = reinterpret_cast<VIDEOINFOHEADER*>(mediaType.pbFormat); 
    在这里重新设置视频流的属性 
    ......... 
    ////////////////////////// 
    pMediaProps->SetMediaType(&mediaType); 


    我想通过pVih指针设置视频的大小,VIDEOINFOHEADER结构如下: 

    typedef struct tagVIDEOINFOHEADER { 
    RECT rcSource, 
    RECT rcTarget; 
    DWORD dwBitRate; 
    DWORD dwBitErrorRate; 
    REFERENCE_TIME AvgTimePerFrame; 
    BITMAPINFOHEADER bmiHeader; 
    } VIDEOINFOHEADER; 

    因为我看到BITMAPINFOHEADER 结构有两个成员 
    LONG biWidth; 
    LONG biHeight; 
    不知道是否通过这bmiHeader的两个变量来设置视频的宽度和高度,??? 
    另:我通过查看GetMediaType返回的媒体类型,发现biWidth和 biHeight都是零?怎么解释啊? 
    还请陆兄再次指教 



    附:BITMAPINFOHEADER结构 
    typedef struct tagBITMAPINFOHEADER { 
    DWORD biSize; 
    LONG biWidth; 
    LONG biHeight; 
    WORD biPlanes; 
    WORD biBitCount; 
    DWORD biCompression; 
    DWORD biSizeImage; 
    LONG biXPelsPerMeter; 
    LONG biYPelsPerMeter; 
    DWORD biClrUsed; 
    DWORD biClrImportant; 
    } BITMAPINFOHEADER; 

  • 相关阅读:
    第12组(78) Beta冲刺 (2/5)(组长)
    第12组 Beta冲刺 (1/6)(组长)
    软工实践个人总结
    第 02 组 每周小结 (3/3)
    第02组 每周小结(2/3)
    第02组 每周小结 (1/3)
    第02组Beta冲刺 总结
    第02组Beta冲刺(5/5)
    第02组Beta冲刺(4/5)
    第02组Beta冲刺(3/5)
  • 原文地址:https://www.cnblogs.com/mfryf/p/2352654.html
Copyright © 2020-2023  润新知