Как избежать написания не-я фреймов с использованием GMFBridge - PullRequest
4 голосов
/ 29 июня 2011

Я использую GMFBridge для записи потоковых исходных видеофайлов в файлы формата dicrete. Как DSBoy GMFBridge с фильтром GMF GDCL MPEG 4 Mux

FirstPart ==>  SourceFilter--> BridgeSinkFilter
SecondPart ==> BridgeSourceFilter ---> GDCL MPEG 4 Mux Filter---> FileWriter 

Я записываю потоки с интервалом в 10 минут и открываю новый файл для следующей записи. Это работает, но пока первая запись в порядке, остальные записи открываются с зелеными плохими кадрами в начале (остальная часть видео в порядке).

Я думаю, что когда я останавливаю средство записи файлов с помощью моста и воссоздаю его с новым файлом, он записывает Non-I Frame в файл. Если так, как я могу избежать записи Non-I Frame в начале записи с этой структурой фильтра directshow?

С наилучшими пожеланиями

1 Ответ

4 голосов
/ 29 июня 2011

Ваше объяснение звучит правильно.GMFBridge изначально был разработан для несжатого видео, поэтому вам нужно будет добавить небольшой код для этой работы.

Самое простое решение - добавить код в граф мультиплексора, непосредственно перед мультиплексором, который отбрасывает данные до тех пор, пока выувидеть начало GOP, но это не идеально, так как вы потеряете данные.

Чтобы сделать это правильно, вам нужно активировать переключатель моста, когда вы видите начало GOP.Один из способов сделать это - написать фильтр детектора GOP, который будет располагаться на восходящем графике прямо перед приемником моста.

Когда вы будете готовы к переключению (через 10 минут), приложение активирует детектор GOP.Когда детектор GOP видит запуск GOP, он блокирует доставку и сигнализирует о приложении.Когда приложение увидит сигнал, оно переключит мост на новый график мультиплексирования, а затем снова включит доставку на детекторе GOP.

G

...