JMF(视频传输)

在coogo上面看到有人在做项目,是多人视频聊天系统。要我做的感觉是很麻烦的一块。视频传输。我是还没有接触过jmf啊。一开始的时候就是只能捕获摄像头,怎么都不能传输,网络上面这方面的资料也比较上,找了很就都没有找到。没有办法,只有到sun公司去看JMF 2.1.1 Solutions。看了半天的例子,终于算是拼凑出来了。现在的问题就是可以传输,但是本地的影像却看不见了,只能看见远端的。

代码如下:

package jmfsample;


import java.io.*;
import javax.media.*;
import javax.media.util.*;
import javax.media.format.*;
import javax.media.control.*;
import javax.media.control.TrackControl;
import javax.media.protocol.DataSource;
import javax.media.protocol.ContentDescriptor;
import javax.media.protocol.PushBufferDataSource;
import javax.media.protocol.PushBufferStream;
import javax.media.control.QualityControl;
import javax.media.rtp.*;
import javax.media.rtp.rtcp.*;
import com.sun.media.rtp.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;

public class JmfV extends JFrame
{
    public static Player player=null;
    private CaptureDeviceInfo di=null;
    private MediaLocator locator=null;
    String str1="vfw:Logitech USB Video Camera:0";
    String str2="vfw:Microsoft WDM Image Capture (Win32):0";
    private Processor processor = null;
    private RTPManager rtpMgrs[];
    private DataSource dataOutput = null,ds=null,ds_1=null;
    private String ipAddress;
    private int portBase;
    public JmfV( String ipAddress,
    String pb,
    Format format )
    {
     this.ipAddress = ipAddress;
     Integer integer = Integer.valueOf(pb);
     if (integer != null)
         this.portBase = integer.intValue();
        di=CaptureDeviceManager.getDevice(str2);
        locator=di.getLocator();
        try
        {
            dataOutput=Manager.createDataSource(locator);  
            player=Manager.createRealizedPlayer(ds);
            player.start();
            Component comp=null,comp_v=null;
            if((comp=player.getControlPanelComponent())!=null)
            {
                this.getContentPane().add(comp,"North");
                if((comp_v=player.getVisualComponent())!=null)
                    this.getContentPane().add(comp_v,"Center");
            } 
            ds=Manager.createCloneableDataSource(dataOutput);
            this.setSize(320,320);
            this.setVisible(true);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }catch(Exception e )
        {
            e.printStackTrace();
        }
    }
    public synchronized String start() {
     String result;

     // Create a processor for the specified media locator
     // and program it to output JPEG/RTP
     result = createProcessor();
     if (result != null)
         return result;

     // Create an RT

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值