Java通过调用FFMPEG获取视频时长

  

<强> FFmpeg 是一套可以用来记录,转换数字音频,视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制,转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多编解码器都是从头开发的。

  

由此看来FFmpeg很强大,很多主流的音频,视频处理软件都使用了FFmpeg。

  

FFmpeg下载下来解压,cmd进入到FFmpeg。exe目录中,即可在命令行下进行各种操作,查看视频信息命令:ffmpeg视频- i,如下图:

  

D: \ ffmpeg \ Libs> ffmpeg - D: \ MonitorRecord \ monitor_20091222_050948_1.avi

        FFmpeg SVN-r10087版本、版权(c) 2000 - 2007法布里斯,等。   配置:——prefix=f:/svn_build_bins——enable-memalign-hack启用共享——disable-static enable-w32threads——enable-liba52 enable-avisynth——enable-libamr-nb enable-libamr-wb——enable-libfaac enable-libfaad——enable-libgsm enable-libmp3lame——enable-libogg enable-libtheora——enable-libvorbis enable-libx264——enable-gpl extra-cflags=- i/usr/地方/包括——extra-ldflags=- l/usr/地方/lib   libavutil版本:49.5.0   libavcodec版本:51.40.4   libavformat版本:51.12.2   建立了>/* *   *获取视频总时间   * @param viedo_path视频路径   * @param ffmpeg_path ffmpeg路径   * @return   */video_path公共静态int getVideoTime(字符串,字符串ffmpeg_path) {   List命令=new java.util.ArrayList ();   commands.add (ffmpeg_path);   commands.add(“我”);   commands.add (video_path);   尝试{   ProcessBuilder builder=new ProcessBuilder ();   builder.command(命令);   最后过程p=builder.start ();//从输入流中读取视频信息   BufferedReader br=new BufferedReader(新InputStreamReader (p.getErrorStream ()));   StringBuffer某人=new StringBuffer ();   字符串行=" ";   在((=br.readLine行())!=null) {   sb.append(线);   }   br.close ();//从视频信息中解析时长   字符串regexDuration=":持续时间(* & # 63;)开始:(* & # 63;),比特率:(*)\ \ d kb \ \/s”;   模式模式=Pattern.compile (regexDuration);   匹配器m=pattern.matcher (sb.toString ());   如果(m.find ()) {   int时间=getTimelen (m.group (1));   log.info (video_path +”,视频时长:“+时间+”,开始时间:“+ m.group(2) +”,比特率:”+ m.group (3) +“kb/s”);   返回时间;   }   }捕捉(异常e) {   e.printStackTrace ();   }      返回0;   }//格式:“00:00:10.68”   私有静态int getTimelen(字符串timelen) {   int min=0;   字符串str []=timelen.split (“:”);   如果(str [0] .compareTo祝辞(“0”);0) {   分钟+=Integer.valueOf (str[0]) * 60 * 60;//秒   }   如果(str [1] .compareTo(“0”)在0){   分钟+=Integer.valueOf (str [1]) * 60;   }   如果(str [2] .compareTo(“0”)在0){   分钟+=Math.round (Float.valueOf (str [2]));   }   返回最小;   }      

,以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

Java通过调用FFMPEG获取视频时长