关于JMF的问题,怎么也不能播放。忘赐教!! 给出全部代码,帮你调试一下前些日子用JMF控制摄像头,还是挺好用的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以播放wav格式的文件,就是播放不了MP3格式的文件。或许是我那个地方配置出错了吧!!奶奶个嘴的。。 这是我控制摄像头的试验代码写的比较简陋package photo;import java.awt.Color;import java.awt.Component;import java.awt.Container;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.Image;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;import javax.media.Buffer;import javax.media.CaptureDeviceInfo;import javax.media.CaptureDeviceManager;import javax.media.Manager;import javax.media.MediaLocator;import javax.media.Player;import javax.media.control.FrameGrabbingControl;import javax.media.format.VideoFormat;import javax.media.util.BufferToImage;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import other.ImagePanel;public class Test4Photo { public static void main(String[] args) { Test4Photo test = new Test4Photo(); test.init(); } // component in which video is playing Component visualComponent = null; // controls gain, position, start, stop Component controlComponent = null; // displays progress during download Component progressBar = null; boolean firstTime = true; long CachingSize = 0L; int controlPanelHeight = 0; int videoWidth = 0; int videoHeight = 0; public static Player player = null; private CaptureDeviceInfo di = null; private MediaLocator ml = null; private ImagePanel imgPanel = null; /** * Read the applet file parameter and create the media player. */ public void init() { JFrame jf = new JFrame(); jf.setSize(320, 600); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container content = jf.getContentPane(); content.setLayout(new GridLayout(3, 2, 1, 20));// JPanel panel = new JPanel();// panel.setSize(320, 240);// panel.setBackground(Color.BLUE);// panel.setLayout(new FlowLayout());// content.add(panel); String str1 = "vfw:Logitech USB Video Camera:0"; String str2 = "vfw:Microsoft WDM Image Capture (Win32):0"; di = CaptureDeviceManager.getDevice(str2); ml = di.getLocator(); try { player = Manager.createRealizedPlayer(ml); player.start(); Component comp; if ((comp = player.getVisualComponent()) != null) { content.add(comp); } } catch (Exception e) { e.printStackTrace(); } imgPanel = new ImagePanel(); imgPanel.setSize(320, 240); imgPanel.setBackground(Color.GREEN); content.add(imgPanel); JButton button1 = new JButton("Get a Photo"); button1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { FrameGrabbingControl fgc = (FrameGrabbingControl) player .getControl("javax.media.control.FrameGrabbingControl"); Buffer buf = fgc.grabFrame(); // 获取当前祯并存入Buffer类 BufferToImage btoi = new BufferToImage((VideoFormat) buf .getFormat()); Image img = btoi.createImage(buf); // show the image imgPanel.setBackgroundImage(img); imgPanel.validate(); } }); button1.setSize(120, 40); content.add(button1); jf.addWindowListener(new WindowListener() { public void windowActivated(WindowEvent arg0) { // TODO Auto-generated method stub } public void windowClosed(WindowEvent arg0) { // TODO Auto-generated method stub } public void windowClosing(WindowEvent arg0) { // TODO Auto-generated method stub if (null != player) player.close(); } public void windowDeactivated(WindowEvent arg0) { // TODO Auto-generated method stub } public void windowDeiconified(WindowEvent arg0) { // TODO Auto-generated method stub } public void windowIconified(WindowEvent arg0) { // TODO Auto-generated method stub } public void windowOpened(WindowEvent arg0) { // TODO Auto-generated method stub } }); jf.setVisible(true); }} 我试过你的代码了,在我这边完全没问题,可以正常播放mp3你检查一下你本机的环境吧1.mp3是否可正常播放,例如用windows mediaplayer直接播放你的mp32.检查你的JMF是否安装正确3.换个mp3文件试试看 忙了两天了,一个小问题终于解决了。下面,我来总结一下。 其实代码一直都没有问题,都是那个该死的JMF发布者,不知道怎么搞的它放了个有缺陷的JMF。害我一直没有安装成功,而我却以为成功了。最终在虚拟机的全新系统下,重新安装了从SUN网站搞来的JMF问题就迎刃而解了,最终收获了成功的喜悦。所以,有时候出了问题,在小圈内查不出问题,应该扩大查错范围,以至于像我一样重新配置系统!! JFM一定要安装么?用他的jar包不能直接用么? 关于switch的问题 struts+spring+hibernate的表单调教问题 关于Rectangle和DimenSion两种方法???? 上海先锋商泰面试题 如何知道某个特定的类在哪个类库里 null->0的问题。hashMap取不着值得的时候 关于instanceof运算符的问题 Java混淆器 在Jbuilder 中怎么样往窗体中动态添加控件? 非常生气的try ...catch的问题 写一个自己的集合类 HashMap中KEY的长度 会不会影响查询速度???
写的比较简陋
package photo;import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;import javax.media.Buffer;
import javax.media.CaptureDeviceInfo;
import javax.media.CaptureDeviceManager;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.control.FrameGrabbingControl;
import javax.media.format.VideoFormat;
import javax.media.util.BufferToImage;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;import other.ImagePanel;public class Test4Photo {
public static void main(String[] args) {
Test4Photo test = new Test4Photo();
test.init();
} // component in which video is playing
Component visualComponent = null;
// controls gain, position, start, stop
Component controlComponent = null;
// displays progress during download
Component progressBar = null;
boolean firstTime = true;
long CachingSize = 0L;
int controlPanelHeight = 0;
int videoWidth = 0;
int videoHeight = 0; public static Player player = null;
private CaptureDeviceInfo di = null;
private MediaLocator ml = null;
private ImagePanel imgPanel = null; /**
* Read the applet file parameter and create the media player.
*/
public void init() {
JFrame jf = new JFrame();
jf.setSize(320, 600);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container content = jf.getContentPane();
content.setLayout(new GridLayout(3, 2, 1, 20));// JPanel panel = new JPanel();
// panel.setSize(320, 240);
// panel.setBackground(Color.BLUE);
// panel.setLayout(new FlowLayout());
// content.add(panel);
String str1 = "vfw:Logitech USB Video Camera:0";
String str2 = "vfw:Microsoft WDM Image Capture (Win32):0";
di = CaptureDeviceManager.getDevice(str2);
ml = di.getLocator();
try {
player = Manager.createRealizedPlayer(ml);
player.start();
Component comp;
if ((comp = player.getVisualComponent()) != null) {
content.add(comp);
}
} catch (Exception e) {
e.printStackTrace();
} imgPanel = new ImagePanel();
imgPanel.setSize(320, 240);
imgPanel.setBackground(Color.GREEN);
content.add(imgPanel); JButton button1 = new JButton("Get a Photo");
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
FrameGrabbingControl fgc = (FrameGrabbingControl) player
.getControl("javax.media.control.FrameGrabbingControl"); Buffer buf = fgc.grabFrame(); // 获取当前祯并存入Buffer类
BufferToImage btoi = new BufferToImage((VideoFormat) buf
.getFormat());
Image img = btoi.createImage(buf); // show the image
imgPanel.setBackgroundImage(img);
imgPanel.validate();
}
});
button1.setSize(120, 40);
content.add(button1); jf.addWindowListener(new WindowListener() { public void windowActivated(WindowEvent arg0) {
// TODO Auto-generated method stub } public void windowClosed(WindowEvent arg0) {
// TODO Auto-generated method stub } public void windowClosing(WindowEvent arg0) {
// TODO Auto-generated method stub
if (null != player)
player.close();
} public void windowDeactivated(WindowEvent arg0) {
// TODO Auto-generated method stub } public void windowDeiconified(WindowEvent arg0) {
// TODO Auto-generated method stub } public void windowIconified(WindowEvent arg0) {
// TODO Auto-generated method stub } public void windowOpened(WindowEvent arg0) {
// TODO Auto-generated method stub }
}); jf.setVisible(true);
}
}
1.mp3是否可正常播放,例如用windows mediaplayer直接播放你的mp3
2.检查你的JMF是否安装正确
3.换个mp3文件试试看
下面,我来总结一下。
其实代码一直都没有问题,都是那个该死的JMF发布者,不知道怎么搞的它放了个有缺陷的JMF。害我一直没有安装成功,而我却以为成功了。最终在虚拟机的全新系统下,重新安装了从SUN网站搞来的JMF问题就迎刃而解了,最终收获了成功的喜悦。所以,有时候出了问题,在小圈内查不出问题,应该扩大查错范围,以至于像我一样重新配置系统!!
?