MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Не отрабатывает событие нового кадра NewFrame Aforge"
Answer 763170
На более мощном ПК не работает, на стареньком все отрабатывает
Если проблема проявляется только на отдельных машинах, вам нужно смотреть, что отличается на проблемной машине в конфигурации DirectShow. Видимо какой-то кодек вызывает проблему, генерируя поток неподходящего формата. AForge использует DirectShow, беглый просмотр исходников FileVideoSource показывает следующую методику построения графа:
Автоматически вставляется выбранный системой source filter (через
AddSourceFilter
)Создается Sample Grabber, настроенный на формат видео
MediaSubType.RGB24
Sample Grabber подцепляется к первому найденному видео-выходу source filter
Слабое место в этой схеме - явное указание
MediaSubType
. Насколько я знаю, если в видеопотоке SubType будет несовместимым с RGB24 (например YUY2), ошибки не выведется, но событие нового кадра никогда не вызовется. Поэтому работоспособность этого класса полностью зависит от того, какой формат будет генерировать декодер видео для конкретного файла на целевой машине.Вы можете попробовать следующее:
Распространять вместе с программой кодеки, которые гарантированно выдают формат RGB для выходного потока видео, и настраивать их так, чтобы они автоматически выбирались системой (имели наивысший приоритет).
Вместо иcпользования AForge, напрямую использовать DirectShow.NET (или модифицировать AForge, пользуясь тем, что это Open Source), и исправить данный недостаток. Нужно при вызове
SetMediaType
вместо явного SubType указывать нулевой GUID - тогда Sample Grabber будет принимать все форматы. И, соответственно, нужно предусмотреть преобразование из других форматов в RGB.
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.