使用IMediaSample DirectShow.Net寻找关键帧

时间:2011-01-24 11:18:24

标签: directshow directshow.net seek keyframe samplegrabber

据我所知,为了检查帧是否是关键帧,我必须检查IMediaSample :: IsSyncPoint()方法,如果帧是关键帧,则返回0(S_OK),或者在另一种情况下是假的。

但IsSyncPoint()方法只是在每个抓取并传递给ISampleGrabberCB :: SampleCB()回调方法的帧中返回0。

我的回调包含的代码很简单:

  public int SampleCB ( double sampleTime, IMediaSample mediaSample )
  {
   Console.WriteLine ( "SampleCB Callback" );
   Console.WriteLine ( mediaSample.IsSyncPoint ( ) + " " );

   Marshal.ReleaseComObject ( mediaSample );
   return 0;
  }

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

您的媒体类型是什么?如果样本采集器正在接收未压缩的视频帧,则每个帧都是同步点。