Потоковое видео с веб-камеры с помощью JMF заставляет Windows 7 переключаться на основную тему

Моя программа Java, которая открывает поток веб-камеры и передает захваченное видео в компонент Swing, работает, но когда я запускаю ее, она заставляет Windows переключаться на тему Basic. Это отрывок из моего кода:

String str1 = "vfw:Logitech USB Video Camera:0";
String str2 = "vfw:Microsoft WDM Image Capture (Win32):0";

captureDeviceInfo = CaptureDeviceManager.getDevice(str2);
Format[] formats = captureDeviceInfo.getFormats();
for (Format format : formats) {
    System.out.println(format);
}
mediaLocator = captureDeviceInfo.getLocator();
try {
    player = Manager.createRealizedPlayer(mediaLocator);
    player.start();
    Component comp;

    if ((comp = player.getVisualComponent()) != null) {
        playerPanel.add(comp);
        add(playerPanel, BorderLayout.NORTH);

    }

Если я закомментирую строку, где я добавляю комп в playerPanel, он не переключится на основную тему, поэтому я предполагаю, что здесь что-то пойдет не так. Насколько я понимаю, JMF больше не поддерживается и, вероятно, не полностью совместим с темой Windows 7 Aero. Но все же, есть ли способ это исправить? Почему он переключается?


person vrutberg    schedule 13.12.2011    source источник


Ответы (3)


Поскольку вы сказали, что это происходит только тогда, когда вы добавляете компонент на панель проигрывателя (то есть, когда видео видно), я думаю, что это может быть связано с проблемой, которая у меня когда-то была с Media Player Classic.

Из http://www.codecguide.com/faq_mpc.htm:

В: Aero отключается, и мой рабочий стол переходит в базовый режим при воспроизведении файла в MPC.

A: Это может произойти, если вы выбрали неправильный видеорендерер в настройках MPC. Aero не совместим с микшером Overlay. [...]

Вероятно, компонент проигрывателя использует этот Overlay Mixer для отображения видео. Попробуйте узнать, сможете ли вы его изменить.

person Sorin    schedule 13.12.2011
comment
Итак, я попробовал этот код на другом компьютере, и он работает без необходимости переключаться на основную тему. Может ли это быть связано с драйверами дисплея? - person vrutberg; 13.12.2011

Итак, ответ на этот вопрос заключался в установке драйверов веб-камеры. Я использую Logitech QuickCam Pro 9000, поэтому я только что скачал драйвер с веб-сайта Logitech. По-видимому, если вы используете универсальный драйвер веб-камеры, который предоставляет Windows, вы можете получить поведение, описанное ранее.

person vrutberg    schedule 14.12.2011

Для решения проблемы добавьте в конструктор следующее:

Manager.setHint(Manager.LIGHTWEIGHT_RENDERER, Boolean.TRUE);

Ваша проблема просто связана с тем, что Swing является легким, а рендеринг по умолчанию нацелен на тяжелые компоненты.

person Olofu Mark    schedule 04.11.2012