Поиск ключевых кадров с помощью IMediaSample DirectShow.Net

Насколько я знаю, чтобы проверить, является ли кадр ключевым, или нет, я должен проверить метод IMediaSample::IsSyncPoint(), который возвращает 0 (S_OK), если кадр является ключевым, или false в другой случай.

Но метод IsSyncPoint () просто возвращает 0 в каждом кадре, который захватывается и передается методу обратного вызова ISampleGrabberCB::SampleCB().

Код, который включает мой обратный вызов, прост:

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

   Marshal.ReleaseComObject ( mediaSample );
   return 0;
  }

Что мне здесь не хватает?

1 ответ

Какой у вас тип медиа? Если устройство захвата образца принимает несжатые видеокадры, то каждый кадр является точкой синхронизации.

Другие вопросы по тегам