⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jmstudio.java

📁 java 开发的sip软电话 源码 jain sip
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
            dlg.dispose();
            dlg = null;
            }
            return;
        }

        count ++;
        newtime = new Integer(count).toString() + " seconds elasped";
        if ( dlg != null )
            dlg.getTextView().setText(newtime);
        } // end of while


    } // end of run()
    }

    private void openRtp () {
        OpenRtpDialog   dlgOpenRtp;
        String          strAction;
        String          strAddress;
        String          strPort;
        String          strTtl;


        dlgOpenRtp = new OpenRtpDialog ( this, cfgJMApps );
        dlgOpenRtp.setVisible(true);
        strAction = dlgOpenRtp.getAction ();
        if ( !strAction.equals(JMDialog.ACTION_OPEN) )
            return;

        strAddress = dlgOpenRtp.getAddress ();

        strPort = dlgOpenRtp.getPort ();
        strTtl = dlgOpenRtp.getTtl ();

    hostAddress= strAddress;
    port= strPort;

    // Get rid of current player
    killCurrentPlayer();

    rtptimer = new RTPTimer(this);
    killed = false;
    recvRTP = false;
    //System.out.println("in openRtp recvRTP = " + recvRTP);
    rtptimer.start();

        mngrSessionRtp = JMFUtils.createSessionManager ( strAddress, strPort, strTtl , this );

        if ( mngrSessionRtp == null ) {
            MessageDialog.createErrorDialog ( this, JMFI18N.getResource("jmstudio.error.sessionmngr.create") );
        killed = true;
        if ( rtptimer != null && rtptimer.isAlive()) {
        rtptimer.interrupt();
        rtptimer = null;
        }
            return;
        }

        updateMenu ();
    }

    public void open ( String nameUrl ) {
        MediaPlayer     mediaPlayer;
        boolean         boolResult;

        mediaPlayer = jmapps.util.JMFUtils.createMediaPlayer ( nameUrl, (Frame)this, audioEffect, videoEffect );

        dataSourceCurrent = null;
        boolResult = open ( mediaPlayer, true );
        if ( boolResult == true ) {
            addToRecentUrlList ( nameUrl );
        }
    }

    public void open ( DataSource dataSource ) {
    open (  dataSource, true  );
    }

    public void open ( DataSource dataSource, boolean killPrevious ) {
        MediaPlayer     mediaPlayer;
        boolean         boolResult;

        mediaPlayer = jmapps.util.JMFUtils.createMediaPlayer ( dataSource, (Frame)this );
        boolResult = open ( mediaPlayer, killPrevious );
        if ( boolResult == true )
            dataSourceCurrent = dataSource;
    }

    public boolean open ( MediaPlayer mediaPlayer ) {
    return open ( mediaPlayer, true );
    }

    public boolean open ( MediaPlayer mediaPlayer, boolean killPrevious ) {

        if ( mediaPlayer == null )
            return ( false );

    if (killPrevious)
            killCurrentPlayer ();


        this.setCursor ( cursorWait );
        mediaPlayerCurrent = mediaPlayer;
    killed = false;

        mediaPlayer.setPlaybackLoop ( menuAutoLoop.getState() );
        mediaPlayer.setFixedAspectRatio ( menuKeepAspect.getState() );
        mediaPlayer.setPopupActive ( false );
        mediaPlayer.setControlPanelVisible ( false );
        mediaPlayer.addControllerListener ( this );
        mediaPlayer.realize();

        updateMenu ();
        return ( true );
    }

    private void exportMediaOld () {
        int             i;
        String          nameUrl;
        Format          format;
        AudioFormat     formatAudioDevice = null;
        VideoFormat     formatVideoDevice = null;
        FormatControl   fcs [];
        DataSource      dataSource;
        SaveAsDialog    dlgSaveAs;

        nameUrl = mediaPlayerCurrent.getMediaLocation ();

        if ( dataSourceCurrent != null ) {
            if (dataSourceCurrent instanceof CaptureDevice) {
                fcs = ((CaptureDevice)dataSourceCurrent).getFormatControls();
                for ( i = 0;  i < fcs.length; i++ ) {
                    format = fcs[i].getFormat();
                    if ( format instanceof AudioFormat )
                        formatAudioDevice = (AudioFormat) format;
                    else if ( format instanceof VideoFormat )
                        formatVideoDevice = (VideoFormat) format;
                }
            }
        }

        if ( nameUrl != null  &&  nameUrl.length() > 1  &&  closeCapture() ) {
            if ( nameCaptureDeviceAudio != null  ||  nameCaptureDeviceVideo != null ) {
                dataSource = JMFUtils.createCaptureDataSource ( nameCaptureDeviceAudio,
                                    formatAudioDevice, nameCaptureDeviceVideo,
                                    formatVideoDevice );
                if ( dataSource == null )
                    System.err.println ( "DataSource is null" );
                dlgSaveAs = new SaveAsDialog ( JMStudio.this, dataSource, cfgJMApps );
            }
            else {
                dlgSaveAs = new SaveAsDialog ( JMStudio.this, nameUrl, null, cfgJMApps);
            }
        }
    }

    private void exportMedia () {
        int             i;
        int             nCount;
        String          nameUrl;
        Format          format;
        AudioFormat     formatAudioDevice = null;
        VideoFormat     formatVideoDevice = null;
        FormatControl   fcs [];
        DataSource      dataSource;
        SaveAsDialog    dlgSaveAs;
        RTPSessionMgr   mngrSession;
        SessionAddress  addrSession;
        InetAddress     addrInet;
        Control         arrControls [];
        String          strResult;

        nameUrl = mediaPlayerCurrent.getMediaLocation ();

        if ( dataSourceCurrent != null  &&  dataSourceCurrent instanceof CDSWrapper) {
            dataSource = dataSourceCurrent;
            dataSourceCurrent = null;
            killCurrentPlayer();
//            setPlaceholder();
            dlgSaveAs = new SaveAsDialog ( JMStudio.this, dataSource, cfgJMApps );
        }
        else if ( nameUrl != null  &&  nameUrl.trim().length() > 0 ) {
            dlgSaveAs = new SaveAsDialog ( JMStudio.this, nameUrl, null, cfgJMApps);
        }
        else if ( vectorMngrSessions.size() > 0  &&  vectorStreams.size() > 0 ) {
            mngrSession = (RTPSessionMgr) vectorMngrSessions.firstElement();

        // this code is not valid for the RTP interface:
            // addrSession = mngrSession.getSessionAddress();
            // addrInet = addrSession.getDataAddress();
            // nameUrl = "rtp://" + addrInet.getHostAddress() + ":" + addrSession.getDataPort();

        addrInet= null;

        try {
            addrInet= InetAddress.getByName( hostAddress);
        } catch( UnknownHostException e) {
        e.printStackTrace();
        }

        nameUrl = "rtp://" + hostAddress + ":" + port;

            arrControls = mediaPlayerCurrent.getControls();
            nCount = arrControls.length;
            for ( i = 0;  i < nCount;  i++ ) {
                if ( arrControls[i] instanceof TrackControl ) {
                    format = ((TrackControl)arrControls[i]).getFormat();
                    if ( format instanceof AudioFormat ) {
                        nameUrl = nameUrl + "/audio";
                        break;
                    }
                    else if ( format instanceof VideoFormat ) {
                        nameUrl = nameUrl + "/video";
                        break;
                    }
                }
            }

            if ( !addrInet.isMulticastAddress() ) {
                strResult = MessageDialog.createOKCancelDialog ( this, JMFI18N.getResource("jmstudio.query.savertp.unicast") );
                if ( !strResult.equals(MessageDialog.ACTION_OK) )
                    return;
                killCurrentPlayer();
            }

            dlgSaveAs = new SaveAsDialog ( JMStudio.this, nameUrl, null, cfgJMApps);
        }
    }

    private void captureMedia () {
        CaptureDialog       dialogCapture;
        DataSource          dataSource;
        CaptureDeviceInfo   cdi;

        nameCaptureDeviceAudio = null;
        nameCaptureDeviceVideo = null;

        dialogCapture = new CaptureDialog ( this, cfgJMApps );
        dialogCapture.setVisible(true);
        if (dialogCapture.getAction() == CaptureDialog.ACTION_CANCEL)
            return;

        cdi = dialogCapture.getAudioDevice();
        if ( cdi != null  &&  dialogCapture.isAudioDeviceUsed() )
            nameCaptureDeviceAudio = cdi.getName();
        cdi = dialogCapture.getVideoDevice();
        if ( cdi != null  &&  dialogCapture.isVideoDeviceUsed() )
            nameCaptureDeviceVideo = cdi.getName();
        dataSource = JMFUtils.createCaptureDataSource ( nameCaptureDeviceAudio,
                                                dialogCapture.getAudioFormat(),
                                                nameCaptureDeviceVideo,
                                                dialogCapture.getVideoFormat() );

        if ( dataSource != null ) {

            if (dataSource instanceof CaptureDevice
                            &&  dataSource instanceof PushBufferDataSource) {
                DataSource cdswrapper = new CDSWrapper((PushBufferDataSource)dataSource);
                dataSource = cdswrapper;
                try {
                    cdswrapper.connect();
                }
                catch (IOException ioe) {
                    dataSource = null;
                    nameCaptureDeviceAudio = null;
                    nameCaptureDeviceVideo = null;
                    MessageDialog.createErrorDialog ( this,
                            JMFI18N.getResource("jmstudio.error.captureds") );
                }
            }

            open ( dataSource );
            if ( dataSource != null ) {
                dlgCaptureControls = new CaptureControlsDialog (  JMStudio.this, dataSource );
                if ( dlgCaptureControls.isEmpty() ) {
                    dlgCaptureControls = null;
                }
                else {
//                    dlgCaptureControls.setVisible ( true );
                }
            }
        }
        else {
            nameCaptureDeviceAudio = null;
            nameCaptureDeviceVideo = null;
            MessageDialog.createErrorDialog ( this,
                            JMFI18N.getResource("jmstudio.error.captureds") );
        }
    }

    private void transmitMedia () {
        TransmitWizard      dlgTransmit;
        String              urlString = null;
        String              strAction;
        MediaPlayer         mediaPlayer;
        Processor           processorTransmit;
        boolean             boolResult;
        DataSource          dataSource = null;

        if ( dataSourceCurrent != null  &&  dataSourceCurrent instanceof CDSWrapper) {
            dataSource = dataSourceCurrent;
            dataSourceCurrent = null;
            killCurrentPlayer();
//            setPlaceholder();
            urlString = "Capture";
        }
        else if ( mediaPlayerCurrent != null ) {
            urlString = mediaPlayerCurrent.getMediaLocation ();
        }

        dlgTransmit = new TransmitWizard ( this, urlString, dataSource, cfgJMApps );
        dlgTransmit.setVisible(true);
        strAction = dlgTransmit.getAction ();
        if ( !strAction.equals(TransmitWizard.ACTION_FINISH) )
            return;

        processorTransmit = dlgTransmit.getProcessor ();
        if ( processorTransmit == null )
            return;

        strOptionalTitle = JMFI18N.getResource ( "jmstudio.playerwindow.transcoding" );
        mediaPlayer = jmapps.util.JMFUtils.createMediaPlayer ( processorTransmit, (Frame)this );
        boolResult = open ( mediaPlayer );
        if ( boolResult == true ) {
            vectorMngrSessions = dlgTransmit.getMngrSessions ();
            vectorStreams = dlgTransmit.getStreams ();
            vectorStreamLabels = dlgTransmit.getStreamLabels ();

            dlgTransmissionStats = new TransmissionStatsDialog ( this, vectorMngrSessions, vectorStreamLabels );
            this.updateMenu ();
        }
    }

    private void setFullScreen ( boolean boolFullScreen ) {
        Dimension   dimScreen;
        Dimension   dimPrefSize;
        Rectangle   rectVideo;


        if ( panelVideo == null )
            return;

        if ( boolFullScreen == true  &&  panelVideo.getParent() != windowFullScreen ) {
            dimFrameSizeBeforeFullScreen = this.getSize ();

            dimScreen = Toolkit.getDefaultToolkit().getScreenSize();
            if ( windowFullScreen == null ) {
                windowFullScreen = new Window ( this );
                windowFullScreen.setLayout( null );
                windowFullScreen.setBackground ( Color.black );
            }
            windowFullScreen.setBounds ( 0, 0, dimScreen.width, dimScreen.height );
            panelContent.remove ( panelVideo );
            dimPrefSize = panelVideo.getPreferredSize ();
            if ( compControl != null) {
                panelContent.remove ( compControl );
            }

            rectVideo = new Rectangle ( 0, 0, dimScreen.width, dimScreen.height );
            if ( (float)dimPrefSize.width/dimPrefSize.height >= (float)dimScreen.width/dimScreen.height ) {
                rectVideo.height = (dimPrefSize.height * dimScreen.width) / dimPrefSize.width;
                rectVideo.y = (dimScreen.height - rectVideo.height) / 2;
            }
            else {
                rectVideo.width = (dimPrefSize.width * dimScreen.height) / dimPrefSize.height;
                rectVideo.x = (dimScreen.width - rectVideo.width) / 2;
            }

            Toolkit.getDefaultToolkit().sync();
            windowFullScreen.add ( panelVideo );
            windowFullScreen.setVisible ( true );
            panelVideo.setBounds ( rectVideo );
            windowFullScreen.validate ();

            listenerMouseFullScreen = new MouseAdapter () {
                public void mouseClicked ( MouseEvent event ) {
                    setFullScreen ( false );
                }
            };
            panelVideo.getVisualComponent().addMouseListener ( listenerMouseFullScreen );
        }
        else if ( boolFullScreen == false  &&  panelVideo.getParent() == windowFullScreen ) {
            //this.setVisible ( false );
            panelVideo.getVisualComponent().removeMouseListener ( listenerMouseFullScreen );
            Toolkit.getDefaultToolkit().sync();
            windowFullScreen.setVisible ( false );
            windowFullScreen.remove ( panelVideo );
            panelContent.add ( panelVideo, BorderLayout.CENTER );
            if ( compControl != null) {
                panelContent.add ( compControl, BorderLayout.SOUTH );
            }
            if ( dimFrameSizeBeforeFullScreen != null ) {
                this.setSize ( dimFrameSizeBeforeFullScreen );
                this.validate ();
            }
            this.setVisible ( true );
        }
    }

    private void doSnapShot () {
        Buffer          bufferFrame;
        BufferToImage   bufferToImage;
        Image           image;

        bufferFrame = controlGrabber.grabFrame ();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -