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)

FFMpeg video duration的更多相关文章

  1. ffmpeg.c简单的结构功能分析(平局)

    当转码的研究看前一阵子FFmpeg资源. 因为ffmpeg.c与此相反的较长的代码.而有相当一部分人AVFilter相关代码(这部分已经不太熟悉),所以学习之前FFmpeg时间,还没有好好看看它的源代 ...

  2. ffmpeg最全的命令参数

    Hyper fast Audio and Video encoderusage: ffmpeg [options] [[infile options] -i infile]... {[outfile ...

  3. ffmpeg.c函数结构简单分析(画图)

    前一阵子研究转码的时候看了FFmpeg的源代码.由于ffmpeg.c的代码相对比较长,而且其中有相当一部分是AVFilter有关的代码(这一部分一直不太熟),因此之前学习FFmpeg的时候一直也没有好 ...

  4. FFmpeg工具使用总结

    . 一. FFmpeg是什么? 简单说,FFmpeg就是一个很好的,免费的,开源的视频转换工具.详细说,FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依 ...

  5. iOS: FFmpeg的使用一

    现状:现在视频直播非常的火,所以在视频直播开发中,使用的对视频进行遍解码的框架显得尤为重要了,其实,这种框架蛮多的,这次主要介绍一下FFmpeg视频播放器的集成和使用,FFmpeg是视频编解码的利器. ...

  6. ffmpeg full help

    Hyper fast Audio and Video encoder usage: ffmpeg [options] [[infile options] -i infile]... {[outfile ...

  7. FFMPEG学习----打印视频信息

    FFMPEG学习资料少之又少,在此推荐雷神的博客: http://blog.csdn.net/leixiaohua1020 在这里,我们把打印视频里的相关信息作为学习FFMPEG的 Hello Wor ...

  8. 移动端HTML5<video>视频播放优化实践

    遇到的挑战 移动端HTML5使用原生<video>标签播放视频,要做到两个基本原则,速度快和体验佳,先来分析一下这两个问题. 下载速度 以一个8s短视频为例,wifi环境下提供的高清视频达 ...

  9. 移动端HTML5<video>视频播放优化实践[转]

    http://blog.csdn.net/u010918416/article/details/52705732 http://www.xuanfengge.com/html5-video-play. ...

随机推荐

  1. 翻译-使用Ratpack和Spring Boot打造高性能的JVM微服务应用

    这是我为InfoQ翻译的文章,原文地址:Build High Performance JVM Microservices with Ratpack & Spring Boot,InfoQ上的中 ...

  2. Echarts使用

    Echarts使用 |版权声明:此文为本人原创,望尊重原创 前言:     和朋友聊天的过程中,朋友提到了Echarts.我当时不知道那个是用来做什么的.回到家我就百度了,开始自己看文档学习.本文是自 ...

  3. angularjs中的directive scope配置

    angularjs中的directive scope配置 定义directive其中重要的一环就是定义scope,scope有三种形式: 默认的scope,DOM元素上原有的scope scope: ...

  4. 读书笔记-you-don't-konw-js

    第一部分:作用域和闭包 不要满足于只是让代码正常工作,而是弄清楚为什么是这样 作用域是什么 定义的变量存储在哪里?程序是如何找到变量的?实现的 规则就是作用域 传统编译语言执行前的编译三步骤(p5) ...

  5. 前端学PHP之面向对象系列第二篇——魔术方法

    × 目录 [1]构造方法 [2]析构方法 [3]不可访问属性[4]对象复制[5]字符串[6]对象不存在[7]自动加载类[8]串行化[9]函数调用 前面的话 php在面向对象部分有很多相关的魔术方法,这 ...

  6. Redis入门

    一.安装 目前,官方最新稳定版本为3.0.7 # wget http://download.redis.io/releases/redis-3.0.7.tar.gz # cd /usr/local/ ...

  7. 利用Dockerfile构建一个基于centos 7,包括java 8, tomcat 7,php ,mysql+mycat的镜像

    Dockerfile内容如下: FROM centos MAINTAINER Victor ivictor@foxmail.com WORKDIR /root RUN rm -f /etc/yum.r ...

  8. 关于MVC EF架构及Repository模式的一点心得

    一直都想写博客,可惜真的太懒了或者对自己的描述水平不太自信,所以...一直都是不想写的状态,关于领域驱动的东西看了不少,但是由于自己水平太差加上工作中实在用不到,所以一直处于搁置状态,最近心血来潮突然 ...

  9. 基于Metronic的Bootstrap开发框架经验总结(5)--Bootstrap文件上传插件File Input的使用

    Bootstrap文件上传插件File Input是一个不错的文件上传控件,但是搜索使用到的案例不多,使用的时候,也是一步一个脚印一样摸着石头过河,这个控件在界面呈现上,叫我之前使用过的Uploadi ...

  10. EntityFramework 实体拆分和表拆分

    之前有人问过 EF 如何进行实体拆分和表拆分?我记得当时认为不可能,理由忘记了,后来又有人发了一段配置截图,发现原来是可以的,不记录的东西容易忘掉,关于 EF 实体拆分和表拆分,下面是自己的一些整理. ...