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