给出全部代码,帮你调试一下前些日子用JMF控制摄像头,还是挺好用的

解决方案 »

  1.   

    可以播放wav格式的文件,就是播放不了MP3格式的文件。或许是我那个地方配置出错了吧!!奶奶个嘴的。。
      

  2.   

    这是我控制摄像头的试验代码
    写的比较简陋
    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);
        }
    }
      

  3.   

    我试过你的代码了,在我这边完全没问题,可以正常播放mp3你检查一下你本机的环境吧
    1.mp3是否可正常播放,例如用windows mediaplayer直接播放你的mp3
    2.检查你的JMF是否安装正确
    3.换个mp3文件试试看
      

  4.   

        忙了两天了,一个小问题终于解决了。
    下面,我来总结一下。
        其实代码一直都没有问题,都是那个该死的JMF发布者,不知道怎么搞的它放了个有缺陷的JMF。害我一直没有安装成功,而我却以为成功了。最终在虚拟机的全新系统下,重新安装了从SUN网站搞来的JMF问题就迎刃而解了,最终收获了成功的喜悦。所以,有时候出了问题,在小圈内查不出问题,应该扩大查错范围,以至于像我一样重新配置系统!!
        
      

  5.   

    JFM一定要安装么?用他的jar包不能直接用么