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. Android EditText悬浮在输入法之上

    Android EditText悬浮在输入法之上 使用 android:windowSoftInputMode="adjustResize" 会让界面整体被顶上去,很多时候我们不需 ...

  2. JavaWeb表单数据的获取方式

    表单页面 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8&q ...

  3. Swift语言快速入门

    Swift语言快速入门(首部同步新版官方API文档和语法的Swift图书,确保代码可编译,作者专家在线答疑,图书勘误实时跟进) 极客学院 编著   ISBN 978-7-121-24328-8 201 ...

  4. angularjs中provider,factory,service的区别和用法

    angularjs中provider,factory,service的区别和用法 都能提供service,但是又有差别 service 第一次被注入时实例化,只实例化一次,整个应用的生命周期中是个单例 ...

  5. 【初恋】vue单页应用开发总结

    vue新人,没有高级技巧 本文主要总结了使用vue-cli脚手架安装开发环境,使用vue.js等进行单页应用开发所遇问题的总结. 技术栈: Vue v1.0.21, vue-resource v0.9 ...

  6. uwp 图片切换动画 使用帧动画

    上一篇博客使用了Timer来实现图片的切换,@lindexi_gd讨论了一下性能,我本人其实对性能这一方面不太熟,但我觉得还是有必要考虑一下,那么今天我们使用帧动画开实现以下 新建项目,添加一个But ...

  7. 对Big Table进行全表更新,导致 Replication 同步数据的过程十分缓慢

    在Publisher database中更新一个big table,数据行数是3.4亿多.由于没有更新 clustered Index key,因此,只产生了3.4亿多个Update Commands ...

  8. SSISDB2:使用TSQL执行Package

    在SSISDB中,能够使用TSQL脚本执行Package:每执行一次Package,SSIS都会创建一个Operation 和一个执行实例(Execution Instance),每个Executio ...

  9. 前端学PHP之面向对象系列第一篇——类和对象

    × 目录 [1]类 [2]成员属性[3]成员方法[4]对象[5]成员访问[6]this 前面的话 面向对象程序设计(OOP)是一种计算机编程架构.计算机程序由单个能够起到子程序作用的单元或对象组成,为 ...

  10. .Net 转战 Android 4.4 日常笔记(6)--Android Studio DDMS用法

    Android Studio DDMS与Eclipse DDMS大同小异,下面了解DDMS的使用 DDMS(Dalvik Debug Monitor Service )Dalvik调试监控服务 DDM ...