我想要做的是用“播放”按钮制作一个 JFrame。单击按钮时,应播放视频。
视频结束后它应该关闭并且应该可以再次单击该按钮。
我解决的问题是:
1. 单击“播放”按钮后,会出现新的视频帧,但没有视图,只有黑色背景。音频播放正常。
2. 视频结束时(以声音判断),执行“reading packet while loop”后,帧不关闭,什么也没有。
我需要的是:
1. 使视频出现。
2.使视频结束,以便程序完成后可以进行其他工作。
在这件事上的任何帮助将不胜感激。
下面是我使用的代码。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import com.xuggle.mediatool.IMediaReader;
import com.xuggle.mediatool.IMediaViewer;
import com.xuggle.mediatool.ToolFactory;
public class FramePlayer extends JFrame {
private String movieName = "movieName.avi";
public FramePlayer() {
//Create Panel
JPanel panel = new JPanel();
getContentPane().add(panel);
panel.setLayout(null);
JButton startButton = new JButton("Play");
startButton.setBounds(50, 60, 80, 30);
startButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
//Play movie on button click
IMediaReader reader = ToolFactory.makeReader(movieName);
IMediaViewer viewer = ToolFactory.makeViewer();
reader.addListener(viewer);
int i = 0;
while(reader.readPacket() == null)
{
//Make sure video is playing
i++;
System.out.println("Frame " + i);
}
//This should appear after video ends
System.out.println("End of video");
}
});
panel.add(startButton);
setSize(300, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
FramePlayer fp = new FramePlayer();
fp.setVisible(true);
}
});
}
}