我想在使用java的媒体播放器中播放视频我使用JMF来显示视频但是它在我使用的JMF库中的一种数据类型中给出了错误,这是我的代码。
#calculate Frequencies
tbl = as.data.frame(table(df$Freq))
#create theoretical poisson distr
dist = dpois(1:7, lambda = mean(tbl$Freq))
dist = dist * 20 #make values in the same scale as tbl$Freq (20 = sum(tbl$Freq))
dist = as.data.frame(dist)
dist$Var1 = tbl$Var1
#qqplot
qqplot(dist$dist, tbl$Freq, xlab = 'Theoretical Quantiles', ylab = 'Empirical Quantiles',
main = 'Q-Q plot Poisson', xlim = c(0,5), ylim = c(0,5))
abline(0,1) #create 45° line
问题是它在这行中给我一个错误
public static void main(String args[]) {
// create a file chooser
JFileChooser fileChooser = new JFileChooser();
// show open file dialog
int result = fileChooser.showOpenDialog(null);
if (result == JFileChooser.APPROVE_OPTION) // user chose a file
{
URL mediaURL = null;
try {
// get the file as URL
mediaURL = fileChooser.getSelectedFile().toURL();
} // end try
catch (MalformedURLException malformedURLException) {
System.err.println("Could not create URL for the file");
} // end catch
if (mediaURL != null) // only display if there is a valid URL
{
JFrame mediaTest = new JFrame("Media Tester");
mediaTest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MediaPlayer mediaPanel = new MediaPlayer(mediaURL);
mediaTest.add(mediaPanel);
mediaTest.setSize(300, 300);
mediaTest.setVisible(true);
} // end inner if
} // end outer if
}
构造函数MediaPlayer(URL)未定义,因为MediaPlayer构造函数不接受任何操作,但我需要将url添加到mediaplayer以在jframe中显示它,但我不能,任何帮助?
答案 0 :(得分:2)
您需要使用setMediaLocation(location)
来指定要启动的媒体的位置,因此请尝试以下操作:
MediaPlayer mediaPanel = new MediaPlayer();
mediaPanel.setMediaLocation(mediaURL.toString());
或者,您可以将setMediaLocator(locator)
用于相同的目的,但如果您拥有URL
则更方便一点,那么代码就是:
MediaPlayer mediaPanel = new MediaPlayer();
mediaPanel.setMediaLocator(new MediaLocator(mediaURL));
答案 1 :(得分:0)
如果您只想播放mp4文件,那就很容易
Desktop.getDesktop().open(new File("test.mp4"));
但是,如果你想在JFrame中专门播放它 然后请记住,JMF不支持mp4格式。 顺便提一下,请分享您的错误消息。
答案 2 :(得分:0)
我们还可以对任何项目或视频使用ProcessBuilder()。
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.JTextField;
public class MainClass extends JPanel{
public MainClass(){
JButton btn1 = new JButton("Button1");
btn1.setBounds(70, 50, 260, 40);
JTextField txtProName = new JTextField();
txtProName.setBounds(100, 50, 200, 40);
add(btn1);
add(txtProName);
}
public static void main(String[]args){
JFrame frm = new JFrame();
frm.getContentPane().add(new MainClass());
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setSize(200, 300);
frm.setVisible(true);
}
}
class bListener implements ActionListener{
bListener(){
public void actionPerformed(ActionEvent e){
ProcessBuilder p = new ProcessBuilder(txtProName.getText());
try{
p.start();
}catch(IOException ex){
Logger.getLogger(frm.class.getName()).log(level.SERVERE, ex.getMessage(), ex);
}
}
}
}
我们也可以将JFileChooser()添加到该项目中,以便在要运行的文件之间选择一个。