Поиск ключевых кадров с помощью 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 ответ
Какой у вас тип медиа? Если устройство захвата образца принимает несжатые видеокадры, то каждый кадр является точкой синхронизации.