亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? traandrec.java

?? 基于JMF的音視頻聊天程序源代碼.在CSDN上找到的
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
            ipAddr = InetAddress.getByName(ipAddress);

            if (isMulticastAddress == false) {
                audioRTPMgr.initialize(new RTPSocketAdapter(audioDataSock,
                        audioCtrlSock,
                        ipAddr, destAudioDataPort,
                        destAudioCtrlPort));
            } else {
                audioRTPMgr.initialize(new RTPSocketAdapter(ipAddr,
                        destAudioDataPort, ttl));
            }

            if (audioDataOutput != null) {
                sendStream = audioRTPMgr.createSendStream(audioDataOutput, 0);
                sendStream.start();
                System.err.println("  - Start audio transmit ");
            }
        } catch (Exception e) {
            return e.getMessage();
        }

        return null;
    }

    public String createVideoRTPMgrs() {

        InetAddress ipAddr;
        SendStream sendStream;

        try {
            if(videoRTPMgr == null){
                videoRTPMgr = RTPManager.newInstance();
            }
            videoRTPMgr.addSessionListener(this);
            videoRTPMgr.addReceiveStreamListener(this);

            ipAddr = InetAddress.getByName(ipAddress);

            if (isMulticastAddress == false) {
                videoRTPMgr.initialize(new RTPSocketAdapter(videoDataSock,
                        videoCtrlSock, ipAddr, destVideoDataPort,
                        destVideoCtrlPort));
            } else {
                videoRTPMgr.initialize(new RTPSocketAdapter(ipAddr,
                        destVideoDataPort, ttl));
            }

            if (videoDataOutput != null) {
                sendStream = videoRTPMgr.createSendStream(videoDataOutput, 0);
                sendStream.start();
                System.err.println("  - Start video transmit ");
            }
        } catch (Exception e) {
            return e.getMessage();
        }

        return null;
    }

    public synchronized void update(SessionEvent evt) {
        if (evt instanceof NewParticipantEvent) {
            Participant p = ((NewParticipantEvent) evt).getParticipant();
            System.err.println("  - A new participant had just joined: " +
                               p.getCNAME());
        }
    }

    public synchronized void update(ReceiveStreamEvent evt) {

        RTPManager mgr = (RTPManager) evt.getSource();
        Participant participant = evt.getParticipant(); // could be null.
        ReceiveStream stream = evt.getReceiveStream(); // could be null.

        if (evt instanceof RemotePayloadChangeEvent) {
            System.err.println("  - Received an RTP PayloadChangeEvent.");
            System.err.println("Sorry, cannot handle payload change.");
            System.exit(0);
        }

        else if (evt instanceof NewReceiveStreamEvent) {
            try {
                stream = ((NewReceiveStreamEvent) evt).getReceiveStream();
                DataSource ds = stream.getDataSource();

                // Find out the formats.
                RTPControl ctl = (RTPControl) ds.getControl(
                        "javax.media.rtp.RTPControl");
                if (ctl != null) {
                    System.err.println("  - Recevied new RTP stream: " +
                                       ctl.getFormat());
                } else {
                    System.err.println("  - Recevied new RTP stream");
                }

                if (participant == null) {
                    System.err.println(
                            "      The sender of this stream had yet to be identified.");
                } else {
                    System.err.println("      The stream comes from: " +
                                       participant.getCNAME());
                }

                Player p = Manager.createPlayer(ds);
                if (p == null) {
                    return;
                }

                p.addControllerListener(this);
                p.realize();
                if (isMulticastAddress &&
                    (ctl.getFormat() instanceof VideoFormat)) {
                    PlayerWindow pw = new PlayerWindow(p, stream); //建新窗口
                    playerWindows.addElement(pw);
                }

                // Notify intialize() that a new stream had arrived.
                synchronized (dataSync) {
                    dataReceived = true;
                    dataSync.notifyAll();
                }

            } catch (Exception e) {
                System.err.println("NewReceiveStreamEvent exception " +
                                   e.getMessage());
                return;
            }
        }

        else if (evt instanceof StreamMappedEvent) {
            if (stream != null && stream.getDataSource() != null) {
                DataSource ds = stream.getDataSource();
                // Find out the formats.
                RTPControl ctl = (RTPControl) ds.getControl(
                        "javax.media.rtp.RTPControl");
                System.err.println("  - The previously unidentified stream ");
                if (ctl != null) {
                    System.err.println("      " + ctl.getFormat());
                }
                System.err.println("      had now been identified as sent by: " +
                                   participant.getCNAME());
            }
        }

        else if (evt instanceof ByeEvent) {

            System.err.println("  - Got \"bye\" from: " + participant.getCNAME());
            PlayerWindow pw = find(stream);
            if (pw != null) {
                pw.close();
                playerWindows.removeElement(pw);
            }
        }
    }

    public synchronized void controllerUpdate(ControllerEvent ce) {

        Player p = (Player) ce.getSourceController();

        if (p == null) {
            return;
        }

        if (ce instanceof RealizeCompleteEvent) {
            if (isMulticastAddress) {
                PlayerWindow pw = find(p);
                if (pw != null) {
                    pw.initialize();
                    pw.setVisible(true);
                    pw.setResizable(false);
                }
            } else {
                if (p.getVisualComponent() != null) {
                    chatFrame.videoPanel.add(new PlayerPanel(p));
                }
            }
            p.start();
        }

        if (ce instanceof ControllerErrorEvent) {
            p.removeControllerListener(this);
            PlayerWindow pw = find(p);
            if (pw != null) {
                pw.close();
                playerWindows.removeElement(pw);
            }
            System.err.println("Receiver internal error: " + ce);
        }

    }

    public boolean isDone() {
        return playerWindows.size() == 0; //判斷窗口數(shù)目是否為零
    }

    PlayerWindow find(Player p) {
        for (int i = 0; i < playerWindows.size(); i++) {
            PlayerWindow pw = (PlayerWindow) playerWindows.elementAt(i);
            if (pw.player == p) {
                return pw;
            }
        }
        return null;
    }

    PlayerWindow find(ReceiveStream strm) {
        for (int i = 0; i < playerWindows.size(); i++) {
            PlayerWindow pw = (PlayerWindow) playerWindows.elementAt(i);
            if (pw.stream == strm) {
                return pw;
            }
        }
        return null;
    }

    class PlayerPanel extends JPanel {

        Component vc, cc;

        PlayerPanel(Player p) {
            setLayout(new BorderLayout());
            if ((vc = p.getVisualComponent()) != null) {
                add("Center", vc);
            }
        }

        public Dimension getPreferredSize() {
            int w = 0, h = 0;
            if (isMulticastAddress) {
                if (vc != null) {
                    Dimension size = vc.getPreferredSize();
                    w = size.width;
                    h = size.height;
                }
                if (cc != null) {
                    Dimension size = cc.getPreferredSize();
                    if (w == 0) {
                        w = size.width;
                    }
                    h += size.height;
                }
                if (w < 160) {
                    w = 160;
                }
                return new Dimension(w, h);
            } else {
                return new Dimension(227, 186);
            }
        }
    }


    class PlayerWindow extends JFrame {

        Player player;
        ReceiveStream stream;

        PlayerWindow(Player p, ReceiveStream strm) {
            player = p;
            stream = strm;
        }

        public void initialize() {
            add(new PlayerPanel(player));
        }

        public void close() {
            player.close();
            setVisible(false);
            dispose();
        }

        public void addNotify() {
            super.addNotify();
            pack();
        }
    }


    Format checkForVideoSizes(Format original, Format supported) {

        int width, height;
        Dimension size = ((VideoFormat) original).getSize();
        Format jpegFmt = new Format(VideoFormat.JPEG_RTP);
        Format h263Fmt = new Format(VideoFormat.H263_RTP);

        if (supported.matches(jpegFmt)) {
            // For JPEG, make sure width and height are divisible by 8.
            width = (size.width % 8 == 0 ? size.width :
                     (int) (size.width / 8) * 8);
            height = (size.height % 8 == 0 ? size.height :
                      (int) (size.height / 8) * 8);
        } else if (supported.matches(h263Fmt)) {
            // For H.263, we only support some specific sizes.
            if (size.width < 128) {
                width = 128;
                height = 96;
            } else if (size.width < 176) {
                width = 176;
                height = 144;
            } else {
                width = 352;
                height = 288;
            }
        } else {
            // We don't know this particular format.  We'll just
            // leave it alone then.
            return supported;
        }

        return (new VideoFormat(null,
                                new Dimension(width, height),
                                Format.NOT_SPECIFIED,
                                null,
                                Format.NOT_SPECIFIED)).intersects(supported);
    }

    // Setting the encoding quality to the specified value on the JPEG encoder.
    // 0.5 is a good default.
    void setJPEGQuality(Player p, float val) {

        Control cs[] = p.getControls();
        QualityControl qc = null;
        VideoFormat jpegFmt = new VideoFormat(VideoFormat.JPEG);

        // Loop through the controls to find the Quality control for
        // the JPEG encoder.
        for (int i = 0; i < cs.length; i++) {

            if (cs[i] instanceof QualityControl && cs[i] instanceof Owned) {
                Object owner = ((Owned) cs[i]).getOwner();

                // Check to see if the owner is a Codec.
                // Then check for the output format.
                if (owner instanceof Codec) {
                    Format fmts[] = ((Codec) owner).getSupportedOutputFormats(null);
                    for (int j = 0; j < fmts.length; j++) {
                        if (fmts[j].matches(jpegFmt)) {
                            qc = (QualityControl) cs[i];
                            qc.setQuality(val);
                            System.err.println("- Setting quality to " +
                                               val + " on " + qc);
                            break;
                        }
                    }
                }
                if (qc != null) {
                    break;
                }
            }
        }
    }

    public Integer stateLock = new Integer(0);
    public boolean failed = false;

    Integer getStateLock() {
        return stateLock;
    }

    void setFailed() {
        failed = true;
    }

    public synchronized boolean waitForState(Processor p, int state) {
        p.addControllerListener(new StateListener());
        failed = false;

        // Call the required method on the processor
        if (state == Processor.Configured) {
            p.configure();
        } else if (state == Processor.Realized) {
            p.realize();
        }

        while (p.getState() < state && !failed) {
            synchronized (getStateLock()) {
                try {
                    getStateLock().wait();
                } catch (InterruptedException ie) {
                    return false;
                }
            }
        }

        if (failed) {
            return false;
        } else {
            return true;
        }
    }


    class StateListener implements ControllerListener {

        public void controllerUpdate(ControllerEvent ce) {

            // If there was an error during configure or
            // realize, the processor will be closed
            if (ce instanceof ControllerClosedEvent) {
                setFailed();
            }

            // All controller events, send a notification
            // to the waiting thread in waitForState method.
            if (ce instanceof ControllerEvent) {
                synchronized (getStateLock()) {
                    getStateLock().notifyAll();
                }
            }
        }
    }


    public String getLocalAddress() {
        InetAddress addr = null;
        try {
            addr = InetAddress.getLocalHost();
        } catch (UnknownHostException ex) {
        }
        return addr.getHostAddress();
    }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜激情网页| 在线这里只有精品| 91视频在线看| 日韩一区二区三区三四区视频在线观看 | 午夜精品爽啪视频| 福利一区二区在线| 欧美成va人片在线观看| 国产精品久线在线观看| 免费观看30秒视频久久| 色综合天天综合狠狠| 精品国产不卡一区二区三区| 一区二区三区在线高清| 国产成人精品亚洲日本在线桃色| 91精品国产黑色紧身裤美女| 一区二区三区高清| 国产精品88888| 日韩欧美久久一区| 亚洲成a人v欧美综合天堂 | 美洲天堂一区二卡三卡四卡视频| 91在线码无精品| 中文字幕精品—区二区四季| 另类小说色综合网站| 欧美日韩的一区二区| 亚洲另类色综合网站| av综合在线播放| 国产日韩av一区| 国产激情一区二区三区四区| 欧美成人国产一区二区| 秋霞影院一区二区| 欧美一区二区三区喷汁尤物| 亚洲午夜免费电影| 在线观看av一区二区| 一个色综合网站| 一本久久综合亚洲鲁鲁五月天| 中文子幕无线码一区tr| 成人免费av在线| 国产精品色噜噜| 成人综合婷婷国产精品久久| 国产精品每日更新| 91美女片黄在线观看| 亚洲人亚洲人成电影网站色| www.日韩大片| 亚洲伦理在线免费看| 欧美午夜精品久久久| 亚洲成人一二三| 欧美精品在线视频| 日本不卡一区二区| 久久综合丝袜日本网| 国产精品亚洲专一区二区三区| 国产亚洲综合在线| youjizz国产精品| 亚洲人午夜精品天堂一二香蕉| 97精品视频在线观看自产线路二| 亚洲男女毛片无遮挡| 欧美区视频在线观看| 久久99蜜桃精品| 日本一区二区在线不卡| 成人动漫视频在线| 亚洲图片有声小说| 精品久久久久久久久久久久包黑料 | 国产91色综合久久免费分享| 中文字幕一区二区在线播放| 欧美三级日韩在线| 久久99国内精品| 国产精品三级久久久久三级| 精品视频在线看| 国产成人精品免费一区二区| 亚洲激情成人在线| 精品美女一区二区三区| 成+人+亚洲+综合天堂| 亚洲第一福利视频在线| 国产亚洲制服色| 欧美另类高清zo欧美| 国产真实乱对白精彩久久| 国产精品毛片无遮挡高清| 91麻豆.com| 丝袜亚洲精品中文字幕一区| 一本一道久久a久久精品综合蜜臀| 日本成人在线电影网| 精品不卡在线视频| 91美女片黄在线观看| 男人的天堂亚洲一区| 国产日产欧美一区| 欧美午夜宅男影院| 久久电影网电视剧免费观看| 久久老女人爱爱| 色av成人天堂桃色av| 免费成人av在线播放| 日本一区二区成人| 欧美精品黑人性xxxx| 国产宾馆实践打屁股91| 亚洲一区二区黄色| 91精品国产免费久久综合| 97se亚洲国产综合自在线| 石原莉奈一区二区三区在线观看| 久久精品水蜜桃av综合天堂| 欧美综合视频在线观看| 国产一区二区剧情av在线| 一区二区三区在线视频观看| 久久品道一品道久久精品| 欧美亚州韩日在线看免费版国语版| 日本不卡在线视频| 午夜精品久久久久久| 国产精品久久看| 欧美一区二区在线免费播放| 99精品久久久久久| 国产伦精品一区二区三区视频青涩| 亚洲色图欧美偷拍| 久久夜色精品国产欧美乱极品| 色婷婷av一区二区三区软件| 韩国v欧美v亚洲v日本v| 亚洲.国产.中文慕字在线| 国产精品久久久久久久久免费丝袜| 日韩写真欧美这视频| 91久久精品一区二区| 成人免费毛片aaaaa**| 久久99久久久欧美国产| 蜜桃av一区二区三区电影| 亚洲成人动漫精品| 亚洲男人的天堂在线aⅴ视频| 国产日韩综合av| 精品国内二区三区| 日韩午夜精品电影| 91麻豆国产精品久久| 在线观看91视频| 91丨porny丨蝌蚪视频| 成人sese在线| 成人激情综合网站| 国产盗摄视频一区二区三区| 久久精品久久综合| 日韩av网站免费在线| 激情综合亚洲精品| 精品一区免费av| 精品中文字幕一区二区小辣椒| 午夜电影久久久| 亚洲v精品v日韩v欧美v专区| 一区二区三区不卡在线观看| 国产精品视频在线看| 一区二区三区加勒比av| 亚洲女性喷水在线观看一区| 国产亚洲欧洲997久久综合| 国产亚洲视频系列| 欧美国产视频在线| 国产精品国产三级国产普通话三级| 中文字幕视频一区二区三区久| 国产日韩一级二级三级| wwww国产精品欧美| www激情久久| 欧美国产日产图区| 国产精品国产自产拍高清av | 国产精品自拍一区| 国产成a人亚洲精| 成人一区二区三区在线观看| 99久久精品免费| 91成人网在线| 欧美精选在线播放| 精品国产青草久久久久福利| 国产日韩欧美亚洲| 中文字幕综合网| 亚洲h精品动漫在线观看| 久久精品久久综合| 麻豆精品视频在线观看| 丁香婷婷综合五月| 91九色最新地址| 日韩一区二区免费在线电影| 久久日韩粉嫩一区二区三区| 亚洲人成在线播放网站岛国| 亚洲成人777| 国产一区二区三区视频在线播放| 成人午夜伦理影院| 欧美三级韩国三级日本三斤| 欧美一区永久视频免费观看| 日本一区二区三区四区在线视频 | 成人精品小蝌蚪| 欧美伊人久久久久久久久影院| 欧美亚洲动漫精品| 久久久久88色偷偷免费| 亚洲精品久久久蜜桃| 日韩av电影免费观看高清完整版在线观看| 国产一区二区三区最好精华液| 国产激情精品久久久第一区二区| 欧美一级生活片| 亚洲欧洲制服丝袜| 成人一道本在线| 3d动漫精品啪啪一区二区竹菊| 国产午夜精品一区二区| 亚洲免费av高清| www.亚洲精品| 欧美一区二区三区影视| 亚洲欧美日韩国产综合在线| 精品一区二区三区蜜桃| 日本高清无吗v一区| 国产日产欧产精品推荐色| 国产一区二三区| 在线观看91av| 麻豆精品国产91久久久久久| 91网站视频在线观看| 久久蜜臀中文字幕| 青椒成人免费视频| 欧美亚洲综合一区|