📄 mediadescriptorutil.java
字号:
* @return true if the specified mediadescriptor is of a known video type * * @see #isVideoType(String) */ public static boolean isVideoType(MediaDescriptor descriptor) { if (descriptor == null) { return false; } return MediaDescriptorUtil.isVideoType(descriptor.mimeType); } /** * Tries to update the mediaplayers in the viewermanager as well as the * layoutmanager and finally sets the mediadescriptors in the * transcription. * * @param transcription the Transcription with the old descriptors * @param descriptors the new media descriptors */ public static void updateMediaPlayers(TranscriptionImpl transcription, Vector descriptors) { if ((transcription == null) || (descriptors == null)) { return; } long mediaTime = 0L; //Vector currentDesc = transcription.getMediaDescriptors(); ViewerManager2 viewerManager = ELANCommandFactory.getViewerManager(transcription); ElanLayoutManager layoutManager = ELANCommandFactory.getLayoutManager(transcription); SignalViewer signalViewer = layoutManager.getSignalViewer(); mediaTime = viewerManager.getMasterMediaPlayer().getMediaTime(); // make sure all players are connected if (layoutManager.getMode() == ElanLayoutManager.SYNC_MODE) { layoutManager.connectAllPlayers(); } // the master media player cannot be removed directly // replace the master; the master is added to the slaves viewerManager.setMasterMediaPlayer(new EmptyMediaPlayer( Integer.MAX_VALUE)); // remove the slaves Vector slavePlayers = viewerManager.getSlaveMediaPlayers(); Vector remPlayers = new Vector(slavePlayers.size()); for (int i = 0; i < slavePlayers.size(); i++) { remPlayers.add(slavePlayers.get(i)); } for (int i = 0; i < remPlayers.size(); i++) { ElanMediaPlayer slave = (ElanMediaPlayer) remPlayers.get(i); viewerManager.destroyMediaPlayer(slave); layoutManager.remove(slave); } if (signalViewer != null) { viewerManager.destroyViewer(signalViewer); layoutManager.remove(signalViewer); } // create new players from the descriptors MediaDescriptorUtil.createMediaPlayers(transcription, descriptors); viewerManager.getMasterMediaPlayer().setMediaTime(mediaTime); transcription.setMediaDescriptors(descriptors); transcription.setChanged(); } /** * Tries to create the mediaplayers in the viewermanager as well as the * layoutmanager and finally sets the mediadescriptors in the * transcription. * * @param transcription the Transcription with the old descriptors * @param descriptors the new media descriptors */ public static void createMediaPlayers(TranscriptionImpl transcription, Vector descriptors) { if ((transcription == null) || (descriptors == null)) { return; } int numDesc = descriptors.size(); try { ViewerManager2 viewerManager = ELANCommandFactory.getViewerManager(transcription); ElanLayoutManager layoutManager = ELANCommandFactory.getLayoutManager(transcription); int maxPlayers = 6; //hardwired for now int nrOfPlayers = 0; String masterMediaURL = null; String signalSource = null; long signalOffset = 0; long masterMediaOffset = 0; boolean createSvgPlayer = false; if (transcription.getSVGFile() != null /*||SVGPrefs.getUseSVG()*/ ) { // this makes all players QT players for now createSvgPlayer = true; } MediaDescriptor curMD; ArrayList failedPlayers = null; for (int i = 0; (i < numDesc) && (nrOfPlayers < maxPlayers); i++) { curMD = (MediaDescriptor) descriptors.get(i); if (!MediaDescriptorUtil.checkLinkStatus(curMD)) { continue; } if ((masterMediaURL != null) && curMD.mimeType.equals(MediaDescriptor.WAV_MIME_TYPE)) { // if it is extracted wav set signal source and do not create a player if (masterMediaURL.equals(curMD.extractedFrom)) { signalSource = curMD.mediaURL; signalOffset = masterMediaOffset; viewerManager.setSignalSourcePlayer(viewerManager.getMasterMediaPlayer()); continue; // create no player } } try { ElanMediaPlayer player; if (createSvgPlayer) { player = viewerManager.createMediaPlayer(curMD, PlayerFactory.QT_MEDIA_FRAMEWORK); } else if (curMD.mimeType.equals( MediaDescriptor.QUICKTIME_MIME_TYPE)) { player = viewerManager.createMediaPlayer(curMD, PlayerFactory.QT_MEDIA_FRAMEWORK); } else { player = viewerManager.createMediaPlayer(curMD); } if (nrOfPlayers == 0) { // here comes the mastermedia player viewerManager.setMasterMediaPlayer(player); masterMediaURL = curMD.mediaURL; masterMediaOffset = curMD.timeOrigin; // if audio than also signal source until proven later // otherwise by mpg media source if (curMD.mimeType.equals(MediaDescriptor.WAV_MIME_TYPE)) { signalSource = curMD.mediaURL; signalOffset = curMD.timeOrigin; viewerManager.setSignalSourcePlayer(player); } } else { // if WAV && signalsource == null use it is the source for the signalviewer if (curMD.mimeType.equals(MediaDescriptor.WAV_MIME_TYPE) && (signalSource == null)) { signalSource = curMD.mediaURL; signalOffset = curMD.timeOrigin; } // if this WAV is extracted from the mastermedia, inherit time-origin if (curMD.mimeType.equals(MediaDescriptor.WAV_MIME_TYPE) && masterMediaURL.equals(curMD.extractedFrom)) { signalSource = curMD.mediaURL; signalOffset = viewerManager.getMasterMediaPlayer() .getMediaDescriptor().timeOrigin; viewerManager.setSignalSourcePlayer(viewerManager.getMasterMediaPlayer()); } // wave player is master media but wav is extracted from this mpg /* Mar 06: block removed: the .wav form as master can have its own offset if (viewerManager.getMasterMediaPlayer() .getMediaDescriptor().mimeType.equals( MediaDescriptor.WAV_MIME_TYPE) && curMD.mediaURL.equals( viewerManager.getMasterMediaPlayer() .getMediaDescriptor().extractedFrom)) { masterMediaOffset = curMD.timeOrigin; // march 06: bug: the video is set as the source for the signal viewer //signalSource = curMD.mediaURL;// bug... //signalOffset = curMD.timeOrigin;// bug... //viewerManager.setSignalSourcePlayer(player); // should the offset of the master media be adjusted to that of the video? // 01-05 no: the user will be warned when he or she gives the files a different offset //viewerManager.getMasterMediaPlayer().setOffset(masterMediaOffset); } */ } nrOfPlayers++; // only add layoutable players to the layout //if (curMD.mimeType.equals(MediaDescriptor.MPG_MIME_TYPE)) { layoutManager.add(player); //} } catch (NoPlayerException npe) { if (failedPlayers == null) { failedPlayers = new ArrayList(); } failedPlayers.add(curMD); } } if (nrOfPlayers == 0) { viewerManager.setMasterMediaPlayer(new EmptyMediaPlayer( transcription.getLatestTime())); layoutManager.add(viewerManager.getMasterMediaPlayer()); } // Create a signal viewer if (signalSource != null) { SignalViewer newSignalViewer = viewerManager.createSignalViewer(signalSource); newSignalViewer.setOffset(signalOffset); layoutManager.add(newSignalViewer); } if (createSvgPlayer) { if (viewerManager.getMasterMediaPlayer() instanceof QTMediaPlayer) { viewerManager.createQTSVGViewer(); } else if (viewerManager.getMasterMediaPlayer() instanceof JMFGraphicMediaPlayer) { // effect or renderer // JMFSVGViewer jmfSVGViewer = viewerManager.createJMFSVGViewer(); } } layoutManager.doLayout(); // inform the user of failures... if ((failedPlayers != null) && (failedPlayers.size() > 0)) { StringBuffer sb = new StringBuffer( "No player could be created for:\n"); for (int i = 0; i < failedPlayers.size(); i++) { sb.append("- " + ((MediaDescriptor) failedPlayers.get(i)).mediaURL + "\n"); } JOptionPane.showMessageDialog(null, sb.toString(), ElanLocale.getString("Message.Warning"), JOptionPane.WARNING_MESSAGE); } } catch (Exception rex) { } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -