视频传输,代码报错,来看看(进来的都给分,不够再加)

视频传输,代码报错,高手进来看看(进来的都给分,不够再加)/****用jmf***/程序如下:/**********************

视频传输,代码报错,高手进来看看(进来的都给分,不够再加)
/****用jmf   ***/
程序如下:


/***************************************************
  *     程序文件名称: VAplay.java

  *     功能:处理视频图像捕获和音频播放

  ***************************************************/

import   java.awt.*;
import   java.awt.image.*;
import   java.awt.event.*;
import   java.util.*;
import   java.io.*;
import   java.net.*;
import   javax.imageio.*;
import   javax.swing.*;
import   javax.media.*;
import   javax.media.protocol.*;
import   javax.media.control.*;
import   javax.media.util.*;
import   javax.media.format.*;
import   com.sun.image.codec.jpeg.*;


class   VAplay   extends   JFrame   implements   Runnable

{

        //定义视频图像播放器

        private   static   Player   player   =   null;

        //定义音频播放器

        private   static   Player   player2   =   null;

        //获取视频设备

        private   CaptureDeviceInfo   device   =   null;

        //获取音频设备

        private   CaptureDeviceInfo   device2   =   null;

        //媒体定位器

        private   MediaLocator   locator   =   null;

        private   Image   image;

        private   Buffer   buffer   =   null;

        private   BufferToImage   b2i   =   null;

        //设置摄像头驱动类型

        String   str   =   "vfw:Microsoft   WDM   Image   Capture   (Win32):0 ";

        //定义播放组件变量

        Component   comV,   comVC,   comA;

        //定义面板

        JPanel   p1,   p2,   p3,   p4;

        JLabel   label   =   new   JLabel( "对方IP: ");

        //初始时,在接收图像窗口显示一幅静态图片

        JLabel   label2   =   new   JLabel(new   ImageIcon( "image//load.gif "));

        //定义二个线程,用于接收数据和发送数据

        Thread   thread1,   thread2;


        VAplay()

        {

                super( "★视频传输★ ");

                setBounds(150,   100,   500,   500);

                p1   =   new   JPanel(new   GridLayout(1,   2));   //(int   rows,   int   cols)   创建具有指定行数和列数的网格布局

                p2   =   new   JPanel(new   GridLayout(2,   1));

                p3   =   new   JPanel(new   BorderLayout());

                p4   =   new   JPanel(new   BorderLayout());



                //加载文本数据传输类

                p1.add(new   TxtChat());

                p1.add(p2);

                p2.add(p3);

                p2.add(p4);

                p3.add( "North ",   new   JLabel( "Java视频图像传输 "));

                p3.add(label2,   "Center ");

                add(label,   "North ");

                add(p1,   "Center ");

                try

                {

                        //在本地播放视频

                        jbInit();

                        //在本地播放音频

                        speaker();

                }

                catch   (Exception   e)

                {

                        e.printStackTrace();

                }

                thread1   =   new   Thread(this);

                thread2   =   new   Thread(this);

//负责接收对方数据

                thread1.start();

//负责向对方发送数据

                thread2.start();

                addWindowListener(new   WindowAdapter()

                {

                        public   void   windowClosing(WindowEvent   e)

                        {

                                System.exit(0);

                        }

                });

                setVisible(true);

                validate();

        }


        //在本地播放视频

        private   void   jbInit()   throws   Exception

        {

                //初始化设备,str为设备驱动

                device   =   CaptureDeviceManager.getDevice(str);



                //确定所需的协议和媒体资源的位置

                locator   =   device.getLocator();

                try

                {

                        //调用sethint后Manager会尽力用一个能和轻量级组件混合使用的Renderer来创建播放器

                        Manager.setHint(Manager.LIGHTWEIGHT_RENDERER,   new   Boolean(true));

                        //通过管理器创建播放线程使player达到Realized状态

                        player   =   Manager.createRealizedPlayer(locator);

                        player.start();

                        if   ((comV   =   player.getVisualComponent())   !=   null)
                        //player.getVisualComponent()是一个播放视频媒体组件。

                        {

                                p4.add(comV,   "Center ");

                        }

                        if   ((comVC   =   player.getControlPanelComponent())   !=   null)
                        //player.getControlPanelComponent()是显示时间的组件

                        {

                                p4.add(comVC,   "South ");

                        }

                }

                catch   (Exception   e)

                {

                        e.printStackTrace();

                }

                setBounds(200,   100,   600,   550);

                setVisible(true);

                int   new_w   =   p4.getWidth();   //输出的图像宽度

                int   new_h   =   p4.getHeight();   //输出的图像高度

                //MediaTracker类跟踪一个Image对象的装载,完成图像加载

                MediaTracker   mt   =   new   MediaTracker(this.p4);

                try

                {



                        mt.addImage(image,   0);   //装载图像

                        mt.waitForID(0);   //等待图像全部装载

                }

                catch   (Exception   e)

                {

                        e.printStackTrace();

                }

                //将图像信息写入缓冲区

                BufferedImage   buffImg   =   new   BufferedImage(new_w,   new_h,
                                                                                                    BufferedImage.TYPE_INT_RGB);

                Graphics   g   =   buffImg.createGraphics();

                g.drawImage(image,   0,   0,   new_w,   new_h,   this.p4);

                g.dispose();

        }


        //在本地播放音频

        private   void   speaker()   throws   Exception

        {

                Vector   deviceList   =   CaptureDeviceManager.getDeviceList(new

                                AudioFormat(AudioFormat.LINEAR,   44100,   16,   2));

                if   (deviceList.size()   >   0)

                {

                        device2   =   (CaptureDeviceInfo)   deviceList.firstElement();

                }

                else

                {

                        System.out.println( "找不到音频设备! ");

                }

                try

                {

                        player2   =   Manager.createRealizedPlayer(device2.getLocator());

                        player2.start();

                        if   ((comA   =   player2.getControlPanelComponent())   !=   null)


                        {

                                p3.add(comA,   "South ");

                        }

                }

                catch   (Exception   e)

                {

                        e.printStackTrace();

                }

        }


        //线程,接收或发送视频图像数据

        public   void   run()

        {

                DatagramPacket   pack   =   null;

                DatagramSocket   maildata   =   null;

                byte   data[]   =   new   byte[320   *   240];

                try

                {



[解决办法]
你用的jdk1.4吧
把VAplay中的
add(label, "North ");
add(p1, "Center ");
换成
getContentPane().add(label, "North ");
getContentPane().add(p1, "Center ");
[解决办法]
java.lang.Error: Do not use spcs.VAplay.add() use spcs.VAplay.getContentPane().add() instead
异常不是报了出来了吗~~说得很明白了
[解决办法]
关注
[解决办法]
java.lang.Error: Do not use spcs.VAplay.add()
use spcs.VAplay.getContentPane().add() instead

错误已经提示了,大概是因为spcs.VAplay.add()这个方法存在问题,新版本已经替换为spcs.VAplay.getContentPane().add()了,所以会提示你替换掉。
[解决办法]
学习
[解决办法]
学习一下
[解决办法]
Do not use spcs.VAplay.add() use spcs.VAplay.getContentPane().add() instead
你的spcs.VAplay.add()方法是错误的,应该先获得容器面板再调用add() ,如下:spcs.VAplay.getContentPane().add()
[解决办法]
好像是散分帖
[解决办法]
up
[解决办法]
UP
[解决办法]
UP 学习!!
[解决办法]
up
[解决办法]
我也在做 我现在就是不能把播放中的媒体流保存为QUICKTIME格式的文件
[解决办法]
为什么不用jmf自带的方法发送啊?
------解决方案--------------------


学习中。。。。。。
[解决办法]
学习 学习
[解决办法]
顶一个,学习下
[解决办法]
楼主好厉害
[解决办法]
jie fen de !
[解决办法]
狂顶````````
[解决办法]
学习
[解决办法]
沙发