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

📄 jmstudio.java

📁 视频编码的一个实例程序
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
        String          strAddress;        String          strPort;        String          strTtl;        dlgOpenRtp = new OpenRtpDialog ( this, cfgJMApps );	    dlgOpenRtp.show ();        strAction = dlgOpenRtp.getAction ();        if ( !strAction.equals(JMDialog.ACTION_OPEN) )            return;        strAddress = dlgOpenRtp.getAddress ();        strPort = dlgOpenRtp.getPort ();        strTtl = dlgOpenRtp.getTtl ();	    mngrSessionRtp = JMFUtils.createSessionManager ( strAddress, strPort, strTtl );        if ( mngrSessionRtp == null ) {            MessageDialog.createErrorDialog ( this, JMFI18N.getResource("jmstudio.error.sessionmngr.create") );            return;        }        mngrSessionRtp.addReceiveStreamListener ( this );        // the rest will be done when we get NewReceiveStreamEvent        updateMenu ();    }    public void open ( String nameUrl ) {        MediaPlayer     mediaPlayer;        boolean         boolResult;        mediaPlayer = jmapps.util.JMFUtils.createMediaPlayer ( nameUrl, (Frame)this );        dataSourceCurrent = null;        boolResult = open ( mediaPlayer );        if ( boolResult == true ) {            addToRecentUrlList ( nameUrl );        }    }    public void open ( DataSource dataSource ) {        MediaPlayer     mediaPlayer;        boolean         boolResult;        mediaPlayer = jmapps.util.JMFUtils.createMediaPlayer ( dataSource, (Frame)this );        boolResult = open ( mediaPlayer );        if ( boolResult == true )            dataSourceCurrent = dataSource;    }    public boolean open ( MediaPlayer mediaPlayer ) {        if ( mediaPlayer == null )            return ( false );        killCurrentPlayer ();        this.setCursor ( cursorWait );        mediaPlayerCurrent = mediaPlayer;        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;        SessionManager  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 = (SessionManager) vectorMngrSessions.firstElement();            addrSession = mngrSession.getSessionAddress();            addrInet = addrSession.getDataAddress();            nameUrl = "rtp://" + addrInet.getHostAddress() + ":" + addrSession.getDataPort();            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.show ();        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.show ();        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 );

⌨️ 快捷键说明

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