zoukankan      html  css  js  c++  java
  • FFMpeg video duration

    1. 代码

    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    
    
    public class FFMPEGDurationer {
        private static final String infoPath = "c:\MediaInfo\";
    
        public static String inform(String fileName) {
            fileName = fileName.replaceAll("/", "\\");
            String cmd = infoPath + "ffmpeg -i " + fileName;
            try {
                Process proc = Runtime.getRuntime().exec(cmd);
                InputStream out = proc.getErrorStream();
                BufferedReader in = new BufferedReader(new InputStreamReader(out));
                String line = "";
                StringBuffer sb = new StringBuffer();
                if(in.readLine()!= null){
                    while((line=in.readLine()) != null){
                        if(line.equals("")||line.indexOf("Duration:")==-1)
                            continue;
                        
                        sb.append(line.trim());
                    }
                }
                
                return sb.toString();
            } catch (IOException e) {
                e.printStackTrace();
                return "";
            }
            
        }
        
        public static long getDuration(String fileName){
            String info = inform(fileName);
            String str = select(info);        
            return parseLong(str);
        }
        
        private static String select(String info){
            String[] infos = info.split(",");
            if(infos.length==0)
                return "";
            
            for(int i=0;i<infos.length;i++){
                String str = infos[i].trim();
                if(str.indexOf("Duration")!=-1){
                    String dur = str.substring(str.indexOf(":")+2);
                    return dur;
                }
            }
            
            return "";
        }
        
        /**
         *duration String eg. 8s 160ms      /   1h 37mn; 
         */
        public static long parseLong(String duration){
            if(duration==null||duration.equals(""))
                return 0;
            if("N/A".equals(duration))
                return 0;
            
            int ms = 0;        
            int p = duration.lastIndexOf(".");
            if(p!=-1){
                String tmp = duration.substring(p+1);
                tmp = "0." + tmp;
                ms = (int)(Float.parseFloat(tmp)*1000);
            }
            int fr = ms*25/1000;
            String frstr = String.format("%02d", fr);      
            try {
                String _dur = duration.substring(0,p) + ":" + frstr;
                return Long.parseLong(_dur);
            } catch (Exception e) {
                return 0;
            }
            
        }
    
        public static void main(String[] args) {
            long str = FFMPEGDurationer.getDuration("d:\a.wmv");
    //        long str = FFMPEGDurationer.getDuration("x:\av\555_MPEG.m2t");
            System.out.println(str);
        }
    
    }

    2. 软件安装 FFmpeg 路径(c:/MediaInfo)

  • 相关阅读:
    将Python的Django框架与认证系统整合的方法
    将Python的Django框架与认证系统整合的方法
    Python的Asyncore异步Socket模块及实现端口转发的例子
    每天一个linux命令(3):du命令
    每天一个linux命令(2):file 命令
    Ubantu 使用extundelete恢复数据
    ubantu 单用户模式进入系统
    GDB 调试解析
    服务器搭建5 Samba实现文件共享
    服务器搭建4 安装其它库
  • 原文地址:https://www.cnblogs.com/rocky-fang/p/6222893.html
Copyright © 2011-2022 走看看