录制保存视频

来源:互联网 发布:淘宝百度推广 编辑:程序博客网 时间:2024/05/02 03:10

三次连续搞了3个晚上都没有搞定的问题:创建出来的source filter在录制avi的时候,时间一直不对,发现filter是全速跑的,指定的fps不起作用。后来另外的人修改了下,可以了,是在线程里加sleep。

一直都认为应该是某个开关或某个属性没设的缘故。昨晚在试这个修改过的filter时发现直接在grahpedt里跑fps是达不到预设值的。

 

今晚看几个filter的说明:AVI Compressor Filter,ASF Writer Filter,AVI Mux Filter。

原来通过设参数  CComQIPtr<IConfigInterleaving,&IID_IConfigInterleaving> pConfigInterleave = pAviMuxFilter;
  if ( pConfigInterleave != NULL )
   pConfigInterleave->put_Mode( INTERLEAVE_CAPTURE );
就可以达到目的的,把filter的代码修改会原来的样子可以正常工作了。

 

 

保存视频3种方法:
1) hr = m_pCapture->SetOutputFileName(
            &MEDIASUBTYPE_Asf,  // Specifies AVI for the target file.

2)  hr = m_pCapture->SetOutputFileName(
   &MEDIASUBTYPE_Avi,

3) 自己手动构建graph,不使用m_pCapture

 

按MSDN里WDM Video Capture Filter的说明,capture filter实现的接口还挺多的,其中一个就是IReferenceClock, 其output pin也需要实现一些接口。

 

保存avi的问题,如何枚举compressor,并不是所有的video compressor都可以用。

 

保存wmv的问题:不调StopWhenReady或调两次保存的内容会被清除掉,或直接调stop也一样。
保存出来的视频还是有问题,出来的fps和预先设计的不一样。

 

原创粉丝点击