264格式的录像视频,实现图像单祯抓取
恳求高手帮忙,给一小段程序,不严谨没关系多谢了!

解决方案 »

  1.   

    bool CDXGraph::SnapshotBitmap(const char * outFile)XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />{       if (mBasicVideo)       {              long bitmapSize = 0;              if (SUCCEEDED(mBasicVideo->GetCurrentImage(&bitmapSize, 0)))              {                     bool pass = false;                     unsigned char * buffer = new unsigned char[bitmapSize];if (SUCCEEDED(mBasicVideo->GetCurrentImage(&bitmapSize, (long *)buffer)))                     {                            BITMAPFILEHEADER       hdr;                            LPBITMAPINFOHEADER       lpbi;                            lpbi = (LPBITMAPINFOHEADER)buffer;                            int nColors = 1 << lpbi->biBitCount;                            if (nColors > 256)       nColors = 0;                            hdr.bfType              = ((WORD) ('M' << 8) | 'B');       //always is "BM"                            hdr.bfSize              = bitmapSize + sizeof( hdr );                            hdr.bfReserved1       = 0;                            hdr.bfReserved2       = 0;hdr.bfOff             Bits = (DWORD) (sizeof(BITMAPFILEHEADER) + lpbi->biSize + nColors *sizeof        (RGBQUAD));CFile bitma            pFile(outFile, CFile::modeReadWrite | CFile::modeCreate | CFile::typeBinary);                            bitmapFile.Write(&hdr, sizeof(BITMAPFILEHEADER));                            bitmapFile.Write(buffer, bitmapSize);                            bitmapFile.Close();                            pass = true;                     }                     delete [] buffer;                     return pass;              }       }       return false;}}
      

  2.   

    direct show开发包中有例子!