📄 jmstudio.java
字号:
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 + -