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

📄 mediadescriptorutil.java

📁 编辑视频文件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * File:     MediaDescriptorUtil.java * Project:  MPI Linguistic Application * Date:     02 May 2007 * * Copyright (C) 2001-2007  Max Planck Institute for Psycholinguistics * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */package mpi.eudico.client.annotator.linkedmedia;import mpi.eudico.client.annotator.ElanLayoutManager;import mpi.eudico.client.annotator.ElanLocale;import mpi.eudico.client.annotator.ViewerManager2;import mpi.eudico.client.annotator.commands.ELANCommandFactory;import mpi.eudico.client.annotator.player.ElanMediaPlayer;import mpi.eudico.client.annotator.player.EmptyMediaPlayer;import mpi.eudico.client.annotator.player.JMFGraphicMediaPlayer;import mpi.eudico.client.annotator.player.NoPlayerException;import mpi.eudico.client.annotator.player.PlayerFactory;import mpi.eudico.client.annotator.player.QTMediaPlayer;import mpi.eudico.client.annotator.util.FileExtension;import mpi.eudico.client.annotator.util.FileUtility;import mpi.eudico.client.annotator.viewer.SignalViewer;import mpi.eudico.server.corpora.clomimpl.abstr.MediaDescriptor;import mpi.eudico.server.corpora.clomimpl.abstr.TranscriptionImpl;import java.io.File;import java.util.ArrayList;import java.util.Vector;import javax.swing.JOptionPane;/** * A utility class for creating, checking and updating mediadescriptors. * * @author Han Sloetjes */public class MediaDescriptorUtil {    /**     * Checks the existance of the file denoted by the mediadescriptor.     *     * @param md the media descriptor     *     * @return true when the file exists, false otherwise     */    public static boolean checkLinkStatus(MediaDescriptor md) {        if ((md == null) || (md.mediaURL == null) ||                (md.mediaURL.length() < 5)) {            return false;        }        //wwj: return true if rtsp presents        if (md.mediaURL.startsWith("rtsp")) {            return true;        }        // remove the file: part of the URL, leading slashes are no problem        int colonPos = md.mediaURL.indexOf(':');        String fileName = md.mediaURL.substring(colonPos + 1);        // replace all back slashes by forward slashes        fileName = fileName.replace('\\', '/');        File file = new File(fileName);        if (!file.exists()) {            return false;        } else {            return true;        }    }    /**     * Creates a mediadescriptor for the specified file.     *     * @param filePath the full path of the file     *     * @return a MediaDescriptor     */    public static MediaDescriptor createMediaDescriptor(String filePath) {        if ((filePath == null) || (filePath.length() == 0)) {            return null;        }        String mediaURL = FileUtility.pathToURLString(filePath);        if (mediaURL == null) {            return null;        }        String mimeType = null;        String mediaExtension;        if (mediaURL.indexOf('.') > -1) {            mediaExtension = mediaURL.substring(mediaURL.lastIndexOf('.') + 1);        } else {            mediaExtension = mediaURL.substring(mediaURL.length() - 3); // of no use, at least with JMF        }        mimeType = MediaDescriptorUtil.mimeTypeForExtension(mediaExtension);        MediaDescriptor md = new MediaDescriptor(mediaURL, mimeType);        return md;    }    /**     * Creates a Vector of mediadescriptors for the specified files.     *     * @param fileNames a collection of files     *     * @return a Vector of MediaDescriptors     */    public static Vector createMediaDescriptors(Vector fileNames) {        Vector mediaDescriptors = new Vector();        if (fileNames == null) {            return mediaDescriptors;        }        MediaDescriptor nextMD = null;mdloop:         for (int i = 0; i < fileNames.size(); i++) {            String path = (String) fileNames.get(i);            nextMD = MediaDescriptorUtil.createMediaDescriptor(path);            if (nextMD == null) {                continue;            }            for (int j = 0; j < mediaDescriptors.size(); j++) {                MediaDescriptor otherMD = (MediaDescriptor) mediaDescriptors.get(j);                if (otherMD.mediaURL.equals(nextMD.mediaURL)) {                    // don't add the same file twice?                    continue mdloop;                }                // should this automatic detection of extracted_from remain??                if (nextMD.mimeType.equals(MediaDescriptor.WAV_MIME_TYPE) &&                        MediaDescriptorUtil.isVideoType(otherMD)) {                    if (FileUtility.sameNameIgnoreExtension(nextMD.mediaURL,                                otherMD.mediaURL)) {                        nextMD.extractedFrom = otherMD.mediaURL;                    }                }                if (otherMD.mimeType.equals(MediaDescriptor.WAV_MIME_TYPE) &&                        MediaDescriptorUtil.isVideoType(nextMD)) {                    if (FileUtility.sameNameIgnoreExtension(nextMD.mediaURL,                                otherMD.mediaURL)) {                        otherMD.extractedFrom = nextMD.mediaURL;                    }                }            }            mediaDescriptors.add(nextMD);        }        return mediaDescriptors;    }    /**     * Returns a mime-type for a given file extension.  Works only for a very     * limited set of known file types.     *     * @param fileExtension the file extension     *     * @return a Mime-Type String from the <code>MediaDescriptor</code> class     */    public static String mimeTypeForExtension(String fileExtension) {        if ((fileExtension == null) || (fileExtension.length() < 2)) {            return MediaDescriptor.UNKNOWN_MIME_TYPE;        }        String lowExt = fileExtension.toLowerCase();        for (int i = 0; i < FileExtension.MPEG_EXT.length; i++) {            if (lowExt.equals(FileExtension.MPEG_EXT[i])) {                return MediaDescriptor.MPG_MIME_TYPE;            }        }        for (int i = 0; i < FileExtension.WAV_EXT.length; i++) {            if (lowExt.equals(FileExtension.WAV_EXT[i])) {                return MediaDescriptor.WAV_MIME_TYPE;            }        }        for (int i = 0; i < FileExtension.QT_EXT.length; i++) {            if (lowExt.equals(FileExtension.QT_EXT[i])) {                return MediaDescriptor.QUICKTIME_MIME_TYPE;            }        }        for (int i = 0; i < FileExtension.MISC_AUDIO_EXT.length; i++) {            if (lowExt.equals(FileExtension.MISC_AUDIO_EXT[i])) {                return MediaDescriptor.GENERIC_AUDIO_TYPE;            }        }        for (int i = 0; i < FileExtension.MISC_VIDEO_EXT.length; i++) {            if (lowExt.equals(FileExtension.MISC_VIDEO_EXT[i])) {                return MediaDescriptor.GENERIC_VIDEO_TYPE;            }        }        return MediaDescriptor.UNKNOWN_MIME_TYPE;    }    /**     * Returns whether the specified mime type is a known video type.     *     * @param mimeType the mime type string     *     * @return true if the specified mimetype is known to be a video type     *     * @see #isVideoType(MediaDescriptor)     */    public static boolean isVideoType(String mimeType) {        if (mimeType == null) {            return false;        }        return (mimeType.equals(MediaDescriptor.GENERIC_VIDEO_TYPE) ||        mimeType.equals(MediaDescriptor.MPG_MIME_TYPE) ||        mimeType.equals(MediaDescriptor.QUICKTIME_MIME_TYPE));    }    /**     * Returns whether the specified MediaDescriptor is of a known video type.     *     * @param descriptor the mediadescriptor     *

⌨️ 快捷键说明

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