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

📄 mediadescriptorutil.java

📁 编辑视频文件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     * @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 + -