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)
FFMpeg video duration的更多相关文章
- ffmpeg.c简单的结构功能分析(平局)
当转码的研究看前一阵子FFmpeg资源. 因为ffmpeg.c与此相反的较长的代码.而有相当一部分人AVFilter相关代码(这部分已经不太熟悉),所以学习之前FFmpeg时间,还没有好好看看它的源代 ...
- ffmpeg最全的命令参数
Hyper fast Audio and Video encoderusage: ffmpeg [options] [[infile options] -i infile]... {[outfile ...
- ffmpeg.c函数结构简单分析(画图)
前一阵子研究转码的时候看了FFmpeg的源代码.由于ffmpeg.c的代码相对比较长,而且其中有相当一部分是AVFilter有关的代码(这一部分一直不太熟),因此之前学习FFmpeg的时候一直也没有好 ...
- FFmpeg工具使用总结
. 一. FFmpeg是什么? 简单说,FFmpeg就是一个很好的,免费的,开源的视频转换工具.详细说,FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依 ...
- iOS: FFmpeg的使用一
现状:现在视频直播非常的火,所以在视频直播开发中,使用的对视频进行遍解码的框架显得尤为重要了,其实,这种框架蛮多的,这次主要介绍一下FFmpeg视频播放器的集成和使用,FFmpeg是视频编解码的利器. ...
- ffmpeg full help
Hyper fast Audio and Video encoder usage: ffmpeg [options] [[infile options] -i infile]... {[outfile ...
- FFMPEG学习----打印视频信息
FFMPEG学习资料少之又少,在此推荐雷神的博客: http://blog.csdn.net/leixiaohua1020 在这里,我们把打印视频里的相关信息作为学习FFMPEG的 Hello Wor ...
- 移动端HTML5<video>视频播放优化实践
遇到的挑战 移动端HTML5使用原生<video>标签播放视频,要做到两个基本原则,速度快和体验佳,先来分析一下这两个问题. 下载速度 以一个8s短视频为例,wifi环境下提供的高清视频达 ...
- 移动端HTML5<video>视频播放优化实践[转]
http://blog.csdn.net/u010918416/article/details/52705732 http://www.xuanfengge.com/html5-video-play. ...
随机推荐
- 翻译-使用Ratpack和Spring Boot打造高性能的JVM微服务应用
这是我为InfoQ翻译的文章,原文地址:Build High Performance JVM Microservices with Ratpack & Spring Boot,InfoQ上的中 ...
- Echarts使用
Echarts使用 |版权声明:此文为本人原创,望尊重原创 前言: 和朋友聊天的过程中,朋友提到了Echarts.我当时不知道那个是用来做什么的.回到家我就百度了,开始自己看文档学习.本文是自 ...
- angularjs中的directive scope配置
angularjs中的directive scope配置 定义directive其中重要的一环就是定义scope,scope有三种形式: 默认的scope,DOM元素上原有的scope scope: ...
- 读书笔记-you-don't-konw-js
第一部分:作用域和闭包 不要满足于只是让代码正常工作,而是弄清楚为什么是这样 作用域是什么 定义的变量存储在哪里?程序是如何找到变量的?实现的 规则就是作用域 传统编译语言执行前的编译三步骤(p5) ...
- 前端学PHP之面向对象系列第二篇——魔术方法
× 目录 [1]构造方法 [2]析构方法 [3]不可访问属性[4]对象复制[5]字符串[6]对象不存在[7]自动加载类[8]串行化[9]函数调用 前面的话 php在面向对象部分有很多相关的魔术方法,这 ...
- Redis入门
一.安装 目前,官方最新稳定版本为3.0.7 # wget http://download.redis.io/releases/redis-3.0.7.tar.gz # cd /usr/local/ ...
- 利用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 ...
- 关于MVC EF架构及Repository模式的一点心得
一直都想写博客,可惜真的太懒了或者对自己的描述水平不太自信,所以...一直都是不想写的状态,关于领域驱动的东西看了不少,但是由于自己水平太差加上工作中实在用不到,所以一直处于搁置状态,最近心血来潮突然 ...
- 基于Metronic的Bootstrap开发框架经验总结(5)--Bootstrap文件上传插件File Input的使用
Bootstrap文件上传插件File Input是一个不错的文件上传控件,但是搜索使用到的案例不多,使用的时候,也是一步一个脚印一样摸着石头过河,这个控件在界面呈现上,叫我之前使用过的Uploadi ...
- EntityFramework 实体拆分和表拆分
之前有人问过 EF 如何进行实体拆分和表拆分?我记得当时认为不可能,理由忘记了,后来又有人发了一段配置截图,发现原来是可以的,不记录的东西容易忘掉,关于 EF 实体拆分和表拆分,下面是自己的一些整理. ...