情况是这样,本人想作个视频聊天的程序,不用怎么复杂,就是能两个人聊聊天,能看见对方的视频就行!可是现在遇到这个问题是:我连本地的视频也看不到,大伙帮忙给看看吧,多谢了!!!下面是代码:import javax.media.*;
import java.io.*;
import java.awt.*;class CaptureVideo extends Frame implements ControllerListener {private CaptureDeviceInfo infor ;
private MediaLocator mediaLocator ;
private String url = "vfw:Microsoft WDM Image Capture (Win32):0";
private Component com;
private Panel panel ;Player player;
public CaptureVideo() {
infor = CaptureDeviceManager.getDevice(url);
mediaLocator = infor.getLocator();}public void play() {
try {
player = Manager.createPlayer(mediaLocator);//利用mediaLocator创建Player
player.addControllerListener(this);
player.realize();// System.out.println("infor:"+infor);
// System.out.println("mediaLocator:"+mediaLocator);
} catch (NoPlayerException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}public void createComponent() {
setTitle("视频信号");
// addWindowListener(new WinClose());setBounds(100,100,200,200);
panel = new Panel();if((com = player.getVisualComponent()) != null) {
panel.add(com);
}
add(panel);
setVisible(true);
}public synchronized void controllerUpdate(ControllerEvent arg0) {
// TODO 自动生成方法存根
if(arg0 instanceof RealizeCompleteEvent) {
System.out.println("realized");
createComponent(); //将播放器添加到Panel上
player.prefetch();}
if(arg0 instanceof PrefetchCompleteEvent) {
player.start();
System.out.println("prefetched");
}
}public static void main(String[] arg0) {
CaptureVideo video = new CaptureVideo();
video.play();}}下面是运行出来的结果:
realized
prefetched
#
# An unexpected error has been detected by Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7c95a982, pid=3204, tid=2164
#
# Java VM: Java HotSpot(TM) Client VM (11.0-b15 mixed mode, sharing windows-x86)
# Problematic frame:
# C  [ntdll.dll+0x2a982]
#
# An error report file with more information is saved as:
# F:\workspace\mpeg1\hs_err_pid3204.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#[error occurred during error reporting , id 0xc0000005]
大伙儿给看看,到底是什么原因,先谢了!!!

解决方案 »

  1.   

    JMF吧,好像有教程。
    好像只支持基本的视频格式, rm, rmvb等都不支持
      

  2.   

    查看Jmf的例子程序吧,好像没有你那么复杂。
      

  3.   

    package picture2;import java.awt.Component;
    import javax.media.*;
    import javax.swing.JFrame;public class MyVideoCapture extends JFrame { private static final long serialVersionUID = 1L; private Player player; private CaptureDeviceInfo captureDeviceInfo; private Component component; public MyVideoCapture() {
    setLocation(200, 200);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    captureDeviceInfo = CaptureDeviceManager
    .getDevice("vfw:Microsoft WDM Image Capture (Win32):0");
    this.setSize(200, 200);
    setVisible(true);
    try { player = Manager.createRealizedPlayer(captureDeviceInfo.getLocator());
    if ((component = player.getVisualComponent()) != null) {
    this.add(component);
    }
    player.start();
    } catch (Exception e) {
    e.printStackTrace();
    } } public static void main(String[] args) {
    new MyVideoCapture();
    }
    }
    我已经运行过了没问题的》》互相学习了