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

📄 jmstudio.java

📁 jmf的示例程序,学习jmf入门示例,很好很强大,什么功能都有
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
        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.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 );            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 ();		bufferToImage = new BufferToImage ( (VideoFormat)bufferFrame.getFormat() );	    image = bufferToImage.createImage ( bufferFrame );	    if ( image == null )            return;		if ( frameSnap == null )		    frameSnap = new SnapFrame ( image, this );        else            frameSnap.setImage ( image );		frameSnap.setTitle ( this.getTitle() + " - " + JMFI18N.getResource("jmstudio.snapshot") );    }    protected void killCurrentView () {

⌨️ 快捷键说明

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