我的编程过程:(只是单向传输,S端视频传个C端)
1.创建一个socket连接(TCP)(这里要做什么设置吗?)
2.S端创建Graph: 添加视频设备Filter,添加Sender Filter. Graph->run;
3.C端收到视频媒体类型后,设置接收Filter的媒体类型, 连接显示Filter。 run。
发送 和 接收 Filter直接用的陆其明 老师的。但是我的传输效果就是很差,也是在局域网。我的很卡。我是不是少哪步关键步凑没做? 求救啊~~~~~~~~ 我本地采集参数设置是这么写的,不知道对不对:IAMStreamConfig *pConfig = NULL;
         hr = pSourceOut->QueryInterface(IID_IAMStreamConfig, (void **)&pConfig);//pSourceOut是采集设备的输出IPin
         if(FAILED(hr))
         {
             MessageBox("IID_IAMStreamConfig没找到!");
             return;
         }
         AM_MEDIA_TYPE *pmt = NULL; 
         LONGLONG avgTimePerFrame = 500000;   // 20fps这里帧数改变了没区别,AVChar里改了也没区别
         hr = pConfig->GetFormat(&pmt);
         if(pmt->formattype == FORMAT_VideoInfo)   
         {
             VIDEOINFOHEADER *pvi = (VIDEOINFOHEADER *) pmt->pbFormat;
             pvi->AvgTimePerFrame        = avgTimePerFrame;
             pvi->bmiHeader.biWidth      = Preferred_Width;
             pvi->bmiHeader.biHeight     = Preferred_Height;
             pvi->bmiHeader.biSizeImage = Preferred_Width * Preferred_Height * pvi->bmiHeader.biBitCount / 8;
             pConfig->SetFormat(pmt);
         }
         pConfig->Release();

解决方案 »

  1.   

    楼主,你是用DirectShow吗?我也想用DirectShow做视频这块的,但是为什么我下载的DirectX SDK安装后没有GraphEdit这个东西啊,是不是我下载的版本不对啊,我都试过好几个版本了,都没有,楼主用的哪个版本啊?
      

  2.   

    GraphEdit  不在directshow里面的。 百度下就有了
      

  3.   

    视频收发都是用UDP的吧,用TCP自然会卡了,因为连续动态的画面一秒是15帧,一个普通聊QQ用的摄像头,你截个位图看看是多大,算算一秒要传多少数据量就知道了。视频传输是必须压缩的
      

  4.   

    因为AVChat很流畅,我就在想是不是有哪步很关键的“让传输更流畅”步骤,我没有做。达到这基础后,再用UDP的话,那效果就更好了。