我正在使用徐歌库在JPanel上播放mp4视频,但是视频加载需要3秒。或者更多。你有什么建议如何在JPanel或JLabel上以正确的方式播放视频吗?
这是一个显示mp4视频的好方法吗?VideoCodec是一个徐哥尔编解码器。这是工作,但我有几秒钟的延迟。
public void setVideoName(final String videoName) {
imageAndVideoPanel.removeAll();
final VideoPanel videoPanel = new VideoPanel();
videoPanel.setPreferredSize(Const.Dimensions.VIDEO_SIZE);
videoPanel.setMinimumSize(Const.Dimensions.VIDEO_SIZE);
videoPanel.setMaximumSize(Const.Dimensions.VIDEO_SIZE);
imageAndVideoPanel.add(videoPanel);
new Thread(new Runnable() {
@Override
public void run() {
VideoCodec videoCodec =
new VideoCodec(videoPanel, videoName + TextsDao.getText("videoFilesExtension"));
}
}).start();
}发布于 2013-12-06 22:30:52
我找到了一个解决方案。VLCJ库和EmbeddedMediaPlayer。播放视频/图像的代码很简单:
public class ExamQuestionsLeftPanel extends JPanel {
private EmbeddedMediaPlayerComponent component;
private EmbeddedMediaPlayer player;..。
public ExamQuestionsLeftPanel() {
setUpPanel();
initializeComponents();
}
private void setUpPanel() {
NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "VLCx86");
component = new EmbeddedMediaPlayerComponent();
player = component.getMediaPlayer();
Border emptyBorder = BorderFactory.createEmptyBorder(10, 10, 10, 10);
setLayout(null);
setBackground(Const.Colors.EXAM_BACKGROUND_COLOR);
setAlignmentX(Component.LEFT_ALIGNMENT);
setBorder(emptyBorder);
}..。
public void setImageName(String imageName) {
player.stop();
player.prepareMedia("media" + File.separator + imageName);
player.parseMedia();
player.play();
}
public void setVideoName(final String videoTitle) {
new Thread(new Runnable() {
@Override
public void run() {
player.stop();
player.prepareMedia("media" + File.separator + videoTitle);
player.parseMedia();
player.play();
}
}).start();
}https://stackoverflow.com/questions/20245494
复制相似问题