我现在做的是一个语音教室,客户端服务器聊天功能跟图像传送功能不能同时实现,现在主要想解决好图像的问题。
我服务器端用系统自带截图功能,截图并实现了BMP图片转化为JPG图片,服务器端设置了定时器,采取Udp协议不停的发送图片,现在客户端已经可以同步实时接收到服务器端的屏幕视频。现在我想在客户端,将接收到的屏幕录像存储下来,并转换为AVI格式。各位大虾,我现在只实现了将接收到的数据存储成TXT文件(这个很容易),请问如何将接收到的数据存储成AVI文件啊!各位大虾能帮我改好,添加客户端存储接收到的服务器端屏幕录像数据功能,我可以传源码过去。

解决方案 »

  1.   

    试试
    void BMPtoAVI(CString szAVIName, CString strBmpDir)
    {
     CFileFind finder;
     strBmpDir += _T("\\*.*");
     AVIFileInit();
     AVISTREAMINFO strhdr;
     PAVIFILE pfile;
     PAVISTREAM ps;
     int nFrames =0;
     HRESULT hr; BOOL bFind = finder.FindFile(strBmpDir);
     while(bFind)
     {
      bFind = finder.FindNextFile();
      if(!finder.IsDots() && !finder.IsDirectory())
      {
       CString str = finder.GetFilePath();
       FILE *fp = fopen(str,"rb");
       BITMAPFILEHEADER bmpFileHdr;
       BITMAPINFOHEADER bmpInfoHdr;
       fseek( fp,0,SEEK_SET);
       fread(&bmpFileHdr,sizeof(BITMAPFILEHEADER),1, fp);
       fread(&bmpInfoHdr,sizeof(BITMAPINFOHEADER),1, fp);   BYTE *tmp_buf = NULL;
       if(nFrames ==0 )
       {
        AVIFileOpen(&pfile,szAviName,OF_WRITE | OF_CREATE,NULL);
        _fmemset(&strhdr, 0, sizeof(strhdr));
        strhdr.fccType = streamtypeVIDEO;// stream type
        strhdr.fccHandler = 0;
        strhdr.dwScale = 1;
        strhdr.dwRate = 15; // 15 fps
        strhdr.dwSuggestedBufferSize = bmpInfoHdr.biSizeImage ;
        SetRect(&strhdr.rcFrame, 0, 0, bmpInfoHdr.biWidth, bmpInfoHdr.biHeight);    // And create the stream;
        hr = AVIFileCreateStream(pfile,&ps,&strhdr);
        // hr = AVIStreamSetFormat(ps,nFrames,&bmpInfoHdr,sizeof(bmpInfoHdr));
       }
       tmp_buf = new BYTE[bmpInfoHdr.biWidth * bmpInfoHdr.biHeight * 3];
       fread(tmp_buf, 1, bmpInfoHdr.biWidth * bmpInfoHdr.biHeight * 3, fp);
       hr = AVIStreamSetFormat(ps,nFrames,&bmpInfoHdr,sizeof(bmpInfoHdr));
       hr = AVIStreamWrite(ps, // stream pointer
          nFrames , // time of this frame
          1, // number to write
          (LPBYTE) tmp_buf,
          bmpInfoHdr.biSizeImage , // size of this frame
          AVIIF_KEYFRAME, // flags....
          NULL,
          NULL);   nFrames ++;
       fclose(fp);
      }
     } AVIStreamClose(ps); if(pfile != NULL)
      AVIFileRelease(pfile);
     AVIFileExit();
    }
      

  2.   

    http://download.csdn.net/source/1194804
      

  3.   

    http://download.csdn.net/source/1194804
    里面只有JPG图片转为AVI的执行程序,没有源代码。
    汗!!!!