Я хотел бы включить воспроизведение HD-видео для своего приложения Java Swing, но меня беспокоит масштабируемость и явное отсутствие прямого доступа для записи на экран. У меня есть собственная библиотека C ++, которая будет выполнять кодирование и декодирование (h.264). Я получу доступ к этой библиотеке через JNI, и она вернет int [], который я буду отображать на экране.
Производительность кодирования / декодирования пока довольно хороша благодаря JNI. Я обеспокоен, однако, по поводу издержек рендеринга. Мне бы хотелось, чтобы одновременно открывалось несколько вариантов рендеринга видео, поэтому я хотел бы убедиться, что я делаю вещи максимально эффективным способом.
Это самый эффективный способ рендеринга видео с помощью Java / Swing? Есть ли способ, которым я могу писать прямо на экран и не проходить через систему рисования Java?
Вот так выглядит мой код:
`
Открытый класс VideoDisplay расширяет JLabel {
BufferedImage m_bufferedImage = null;
public VideoDisplay(Dimension frameSize) {
// If there is nothing to show, make sure the widget is black.
setBackground(Color.black);
m_bufferedImage = new BufferedImage(frameSize.width, frameSize.height,
BufferedImage.TYPE_INT_ARGB);
ImageIcon frameIcon = new ImageIcon(m_bufferedImage);
setIcon(frameIcon );
}
public void displayNewFrame(int[] newPixels, Dimension imageSize) {
m_bufferedImage.setRGB(0, 0, imageSize.width, imageSize.height,
newPixels, 0, imageSize.width);
repaint();
}
} `
В настоящий момент мои накладные расходы на отображение видео с разрешением 720p со скоростью 24FPS, по-видимому, составляют около 6% ЦП на процессоре Core2 Quad 6600.
Есть ли более быстрый способ сделать это?