我想爲我的Java Swing應用程序啓用高清視頻播放功能,但我擔心可擴展性和明顯缺乏直接屏幕寫入訪問。我有一個本地C++庫,它將進行編碼和解碼(h.264)我將通過JNI訪問這個庫,它將返回一個int [],我將呈現給屏幕。在Java Swing中渲染高清視頻?太慢了?
迄今爲止,通過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();
}
}`
現在我在24FPS顯示720p視頻的開銷似乎是約6% Core2 Quad 6600 CPU上的CPU。
有沒有更快的方法來做到這一點?
查看JMF(Java Media Framework):http://en.wikipedia.org/wiki/Java_Media_Framework – Jesper 2010-12-08 11:00:08