Я пытаюсь прочитать необработанные видеокадры с устройства захвата видео, используя JMF - Java Media Framework.
Я успешно написал часть «захвата» - используя Player объект, созданный Manager , я могу отображать видео в реальном времени с веб-камеры. Однако я не знаю, как создать собственный компонент для доступа к реальным кадрам. Вероятно, это связано с тем, что до сих пор Manager создавал каждый экземпляр класса, который мне был нужен.
Я хотел бы начать с написания графического компонента, отображающего видео. (Я не знаком с AWT / Swing, но, основываясь на знании других структур графического интерфейса, я бы сказал, что-то происходит от, скажем, JPanel, который рисует видео, когда делается запрос на перекрашивание или доступен новый кадр.) Я хотел бы иметь возможность обрабатывать каждый новый кадр и цикл на х / у по всем пикселям. У меня есть доступ к формату raw / RGB на моем устройстве, но автоматическое преобразование, скажем, из YUV не помешает.
Понятия не имею, с чего начать. Документация JMF рекомендует извлекать мой класс из Процессор или DataSink в нескольких разных местах. Использование интерфейса Processor кажется излишним - мне, например, не понадобятся функции управления воспроизведением и синхронизацией; и я не знаю, как их реализовать. Вывод из DataSink кажется более простым вариантом с менее бесполезными абстрактными функциями. Однако, в любом случае, я в полной растерянности относительно того, как:
а) Подключите компонент к моему источнику видеозахвата
б) Доступ к фактическим буферам кадров из класса
Возможно, я даже иду в неправильном направлении; Я просто хотел документировать то, что я пробовал до сих пор. Документация JMF кажется скудной и в основном ориентированной на [разработку] медиаплееров и конвертеров.
Примечание. Библиотека обработки, кажется, имеет простое решение для этого. Я видел пример в следующем виде: x = new Image(captureDevice.getFrame())
, который, по-видимому, предполагает доступ на уровне пикселей, через Image, если не промежуточный тип.
Но мне бы очень хотелось увидеть, насколько сложно сначала в JMF.