`
chenyunhong
  • 浏览: 140362 次
  • 性别: Icon_minigender_1
  • 来自: 真的不知道
社区版块
存档分类
最新评论

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

 
阅读更多

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

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

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

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

FFmpeg version SVN-r10087, Copyright (c) 2000-2007 Fabrice Bellard, et al.
  configuration: --prefix=f:/svn_build_bins --enable-memalign-hack --enable-shared --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/local/include --extra-ldflags=-L/usr/local/lib
  libavutil version: 49.5.0
  libavcodec version: 51.40.4
  libavformat version: 51.12.2
  built on Aug 12 2007 11:38:35, gcc: 4.2.1

  Compiled by msn: dev # fastreaming.com, 2007/08/12
  Enjoy it

Input #0, avi, from 'D:\MonitorRecord\monitor_20091222_050948_1.avi':
  Duration: 00:00:25.0, start: 0.000000, bitrate: 619 kb/s
  Stream #0.0: Video: mpeg4, yuv420p, 1620x1100,  1.14 fps(r)
Must supply at least one output file

 

    在Java中执行此操作,解析返回结果,可以得到视频时长等信息。

/**
	 * 获取视频总时间
	 * @param viedo_path    视频路径
	 * @param ffmpeg_path	ffmpeg路径
	 * @return
	 */
	public static int getVideoTime(String video_path, String ffmpeg_path) {
		List<String> commands = new java.util.ArrayList<String>();
		commands.add(ffmpeg_path);
		commands.add("-i");
		commands.add(video_path);
		try {
			ProcessBuilder builder = new ProcessBuilder();
			builder.command(commands);
			final Process p = builder.start();
			
			//从输入流中读取视频信息
	        BufferedReader br = new BufferedReader(new InputStreamReader(p.getErrorStream()));
	        StringBuffer sb = new StringBuffer();
	        String line = "";
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }
	        br.close();
	        
	        //从视频信息中解析时长
	        String regexDuration = "Duration: (.*?), start: (.*?), bitrate: (\\d*) kb\\/s";
	        Pattern pattern = Pattern.compile(regexDuration);
	        Matcher m = pattern.matcher(sb.toString());
	        if (m.find()) {
	        	int time = getTimelen(m.group(1));
	        	log.info(video_path+",视频时长:"+time+", 开始时间:"+m.group(2)+",比特率:"+m.group(3)+"kb/s");
	        	return time;
	        }
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return 0;
	}
	
	//格式:"00:00:10.68"
    private static int getTimelen(String timelen){
        int min=0;
        String strs[] = timelen.split(":");
        if (strs[0].compareTo("0") > 0) {
            min+=Integer.valueOf(strs[0])*60*60;//秒
        }
        if(strs[1].compareTo("0")>0){
            min+=Integer.valueOf(strs[1])*60;
        }
        if(strs[2].compareTo("0")>0){
            min+=Math.round(Float.valueOf(strs[2]));
        }
        return min;
    }

 

1
2
分享到:
评论

相关推荐

    java中使用FFMpeg获取视频时长

    总的来说,Java中使用FFmpeg获取视频时长是一项实用的功能,通过FFmpeg的Java绑定库,我们可以轻松地在Java应用中集成这一特性。这不仅有助于提升用户体验,例如在上传视频时即时显示时长,还可以用于其他如视频处理...

    java调用ffmpeg转换视频,并读取转换后视频的分辨率、大小以及时长

    java调用ffmpeg转换视频,并读取转换后视频的分辨率、大小以及时长。主要参考http://blog.sina.com.cn/s/blog_a5116c670102wiwj.html 的代码方式。步骤: 1.研究java如何调用外部程序 2.研究ffmpeg转换视频格式的...

    java上传调用ffmpeg转码截图截取视频

    获取视频时长,我们可以使用`ffprobe`,它是FFmpeg的一部分,用于提取媒体元数据。命令可能如下: ```java String durationCommand = "ffprobe -v error -show_entries format=duration -of default=noprint_...

    Java利用FFmpeg解析视频,截图,获取视频播放时间

    这个例子中,`main`方法首先调用FFmpeg进行截图,然后使用ffprobe获取视频的播放时间。请注意,实际应用中需要处理各种异常情况,并确保FFmpeg已正确安装并可从系统路径访问。 在提供的压缩包文件"javaffmpeg"中,...

    利用ffmpeg获取视频封面图,时长信息

    本篇文章将详细探讨如何使用`ffmpeg`来获取视频的封面图以及视频的时长信息,尤其对于Java开发者来说,这些知识是进行多媒体处理时的基础。 首先,让我们了解如何通过`ffmpeg`获取视频封面图。视频封面图通常是指...

    windows下java调用ffmpeg视频处理源码

    5. **获取视频信息**:源码可能包含解析FFmpeg的元数据信息,如分辨率、编码器、帧率、时长等。这些信息对于视频处理和分析非常有用。 6. **环境搭建**:配合"windows下java调用ffmpeg视频处理环境搭建",这部分...

    使用ffmpeg.exe获取文件属性信息,视频音频时长

    使用ffmpeg.exe获取文件属性信息,ffmpeg是java开发的用于多媒体文件编辑的命令行工具,有多个版本,功能比较强大,C#中可以在进程外异步调用这个工具 using (System.Diagnostics.Process pro = new System....

    java后台利用ffmpeg实现将视频截取某一帧图片并保存

    首先,`ffmpeg.jar`是Java版的FFmpeg封装,它提供了与FFmpeg命令行工具类似的接口,方便在Java程序中调用FFmpeg的功能。你需要先将这个JAR文件添加到项目的类路径中,以便能够使用其提供的API。 FFmpeg支持多种操作...

    获取视频宽高、格式、大小、时长等信息

    util 类 内含 java-1.0.2.jar 开发人员可以使用JAVE 在不同的格式间转换视频和音频 例如将 AVI 转成 MPEG 动画 等等 ffmpeg 中可以完成的在 JAVE 都有对应的方法

    java封装ffmpeg实现视频文件信息自动获取及截图

    ffmpeg本身没有支持java的AIP,所以在这里使用java中runtime操作ffmpeg获取视频文件的分辨率、码率、时长等信息,以及自动截图功能。 其中有个java项目、ffmpeg-win32程序包

    ffmpeg.exe和jave-2.0.jar(获取视频时长)

    `jave-2.0.jar` 是一个Java库,专门设计用来处理视频,它提供了方便的API来与`ffmpeg`进行交互,使得在Java应用程序中获取视频时长变得简单。 要使用`ffmpeg`在命令行获取视频时长,可以执行以下命令: ```bash ...

    java使用Xuggler获得视频时长,分辨率,高宽,码率等信息

    总的来说,Xuggler为Java开发者提供了一个强大且灵活的工具,用于处理和分析音视频文件,包括获取视频的时长、分辨率、高宽比和码率等关键信息。通过熟练掌握Xuggler的使用,你可以轻松地构建出能够处理多媒体文件的...

    java使用OpenCV从视频文件中获取帧

    System.out.println("视频总时长:" + len); Double d_s = new Double(len); System.out.println(d_s.intValue()); Mat frame = new Mat(); for (int i = 0; i (); i++) { // 设置视频的位置(单位:毫秒) cap...

    java获取视频信息,帧(封面图片)

    总之,Java调用FFmpeg进行视频信息获取和帧提取是一项实用的技术,可以为多媒体应用如视频编辑、分析或信息检索等场景提供便利。通过熟悉FFmpeg命令和相应的Java库,开发者可以高效地实现这些功能。

    java调用ffmpeg实现转换视频

    Xuggler 提供了对视频流的解析和处理,包括获取视频流的时长、分辨率和文件大小等信息。 总结 Java 调用 FFmpeg 实现转换视频是一种常见的解决方案,通过 Java 语言调用 FFmpeg 的命令来实现视频格式的转换。这种...

    java读取文件夹中视频的视频信息.视频的大小,时长,名字等等

    4分45秒---9.99M---LabView05---第14章LabVIEW中子VI的设置及调用.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView05-第14章LabVIEW中子VI的设置及调用.wmv 34分30秒---61.03M---LabView06---第15章其它高级...

    springboot 获取视频第一帧和时长

    2. **获取视频时长** 使用FFmpeg,可以获取视频的总时长。在Java代码中,这通常通过执行一个FFmpeg命令来完成: ```java Process process = Runtime.getRuntime().exec("ffmpeg -i input.mp4 -f null -"); ...

    Java使用FFmpeg实现mp4转m3u8

    3) 编写Java代码:使用Java调用FFmpeg命令行,执行转换操作。例如: ```java Process process = Runtime.getRuntime().exec("ffmpeg -i input.mp4 -hls_time 10 -hls_list_size 0 output.m3u8"); ``` 上述...

    基于ffmpeg的音频处理Java SDK

    获取音频文件信息包括元数据(如艺术家、专辑、时长等)以及技术信息(如采样率、位深度、声道数等)。这个功能有助于了解音频文件的基本属性,从而在处理前做出适当的决策。例如,在上传音频到平台时,可能需要验证...

Global site tag (gtag.js) - Google Analytics