RT,最好给个demo

解决方案 »

  1.   

    /**
     * 获取视频播放总时长
     * 
     * @param fileName
     *            视频名称
     * @param dir
     *            存放视频的目录
     * @return
     * @throws IOException 
     */
    public static long getVideoPlayTime(String videoName, File dir) throws IOException{
    Process p = null;
    if (isWindowsSystem()) {
    p = Runtime.getRuntime().exec(
    "cmd /c timelength.bat " + "\"" + dir.getPath() + "/" + videoName
    + ".wmv\"");
    } else {
    String cmd = "sh " + getMplayerBinPath() + "/timelength.sh " + dir.getPath()+ "/" + videoName + ".wmv";
    p = Runtime.getRuntime().exec(cmd);
    }

    InputStream is = p.getInputStream();
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr);
    String line = null;
    while ((line = br.readLine()) != null) {
    if(line != null){
    if(line.startsWith("ID_LENGTH")){
    String second = line.split("=")[1].trim();
    int pos = 0;
    if((pos = second.indexOf(".")) != -1){
    // 去除小数点后的数字
    return Long.parseLong(second.substring(0, pos));
    }else{
    return Long.parseLong(second);
    }
    }
    }

    }

    try {
    br.close();
    isr.close();
    is.close();
    } catch (Exception e) { }
    return 0;
    } /**
     * 格式化视频播放时长
     * @param time
     * @return
     */
    public static String formatVideoTimeLength(long time) {
    long s = time % 60;
    long m = (time / 60) % 60;
    long h = time / 3600;
    return toTimeString(h) + ":" + toTimeString(m) + ":" + toTimeString(s);
    }这个代码可以获取wmv视频文件的时长,你可以照着写,但是得知道wav文件头的格式
      

  2.   

    import java.io.File;
    import java.io.IOException;import javax.sound.sampled.AudioInputStream;
    import javax.sound.sampled.AudioSystem;
    import javax.sound.sampled.Clip;
    import javax.sound.sampled.LineUnavailableException;
    import javax.sound.sampled.UnsupportedAudioFileException;public class AudioLength {    public static void main(String[] args) throws LineUnavailableException,
                UnsupportedAudioFileException, IOException {
            File file = new File("d:/test.wav");
            Clip clip = AudioSystem.getClip();
            AudioInputStream ais = AudioSystem.getAudioInputStream(file);
            clip.open(ais);
            System.out.println( clip.getMicrosecondLength() / 1000000D + " s" );
        }
    }