Чтение необработанных данных из видео захвата в JMF - PullRequest
3 голосов
/ 06 марта 2009

Я пытаюсь прочитать необработанные видеокадры с устройства захвата видео, используя 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.

Ответы [ 2 ]

1 голос
/ 08 февраля 2012

Вы можете попробовать код, который я разместил здесь , который использует JMF и класс с именем FrameGrabber.

1 голос
/ 07 февраля 2012

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

...