Я разрабатываю приложение для мониторинга 20 видеопотоков одновременно. У меня будет JFrame и 20 ящиков (например, JPanel) внутри JFrame для отображения 20 потоков. Я могу загружать поток и декодировать с помощью xuggler, но теперь как я могу отобразить это через Swing JPanel?
Я могу воспроизводить звук на SourceDataLine, моя проблема только в том, как отображать 20 * 30 = 600 видеокадров в секунду на компоненте Swing?
Также xuggler выводит декодированные кадры в формате пикселей YUV420P, есть ли накладные расходы на преобразование этого в RGB, создание BufferedImage и отображение в компоненте Swing?
Пожалуйста, помогите мне в этом. Я хочу отображать 20 видеопотоков одновременно в компонентах Swing.
1 ответ
Вот код, который я искал в Google, который преобразует YUV420 в кадры BufferedImage. Вы можете использовать это как основу для того, что хотите.
Вы, вероятно, также не сможете обрабатывать 600 кадров видео в секунду на ПК. Вам нужно будет посмотреть, сколько видеокадров вы можете преобразовать в секунду, а остальные кадры отбросить.
Вероятно, лучший способ обработать 20 видеопотоков - иметь 20 потоков, захватывающих видеокадр, конвертирующих видеокадр в BufferedImage и передавая BufferedImage в поток отправки событий (EDT) для Swing для рисования на соответствующей панели JPanel. Когда поток возвращается, чтобы захватить следующий видеокадр, вы автоматически отбрасываете кадры, которые ПК не успел обработать.
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.