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; }
相关推荐
总的来说,Java中使用FFmpeg获取视频时长是一项实用的功能,通过FFmpeg的Java绑定库,我们可以轻松地在Java应用中集成这一特性。这不仅有助于提升用户体验,例如在上传视频时即时显示时长,还可以用于其他如视频处理...
java调用ffmpeg转换视频,并读取转换后视频的分辨率、大小以及时长。主要参考http://blog.sina.com.cn/s/blog_a5116c670102wiwj.html 的代码方式。步骤: 1.研究java如何调用外部程序 2.研究ffmpeg转换视频格式的...
获取视频时长,我们可以使用`ffprobe`,它是FFmpeg的一部分,用于提取媒体元数据。命令可能如下: ```java String durationCommand = "ffprobe -v error -show_entries format=duration -of default=noprint_...
这个例子中,`main`方法首先调用FFmpeg进行截图,然后使用ffprobe获取视频的播放时间。请注意,实际应用中需要处理各种异常情况,并确保FFmpeg已正确安装并可从系统路径访问。 在提供的压缩包文件"javaffmpeg"中,...
本篇文章将详细探讨如何使用`ffmpeg`来获取视频的封面图以及视频的时长信息,尤其对于Java开发者来说,这些知识是进行多媒体处理时的基础。 首先,让我们了解如何通过`ffmpeg`获取视频封面图。视频封面图通常是指...
5. **获取视频信息**:源码可能包含解析FFmpeg的元数据信息,如分辨率、编码器、帧率、时长等。这些信息对于视频处理和分析非常有用。 6. **环境搭建**:配合"windows下java调用ffmpeg视频处理环境搭建",这部分...
使用ffmpeg.exe获取文件属性信息,ffmpeg是java开发的用于多媒体文件编辑的命令行工具,有多个版本,功能比较强大,C#中可以在进程外异步调用这个工具 using (System.Diagnostics.Process pro = new System....
首先,`ffmpeg.jar`是Java版的FFmpeg封装,它提供了与FFmpeg命令行工具类似的接口,方便在Java程序中调用FFmpeg的功能。你需要先将这个JAR文件添加到项目的类路径中,以便能够使用其提供的API。 FFmpeg支持多种操作...
util 类 内含 java-1.0.2.jar 开发人员可以使用JAVE 在不同的格式间转换视频和音频 例如将 AVI 转成 MPEG 动画 等等 ffmpeg 中可以完成的在 JAVE 都有对应的方法
ffmpeg本身没有支持java的AIP,所以在这里使用java中runtime操作ffmpeg获取视频文件的分辨率、码率、时长等信息,以及自动截图功能。 其中有个java项目、ffmpeg-win32程序包
`jave-2.0.jar` 是一个Java库,专门设计用来处理视频,它提供了方便的API来与`ffmpeg`进行交互,使得在Java应用程序中获取视频时长变得简单。 要使用`ffmpeg`在命令行获取视频时长,可以执行以下命令: ```bash ...
总的来说,Xuggler为Java开发者提供了一个强大且灵活的工具,用于处理和分析音视频文件,包括获取视频的时长、分辨率、高宽比和码率等关键信息。通过熟练掌握Xuggler的使用,你可以轻松地构建出能够处理多媒体文件的...
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调用FFmpeg进行视频信息获取和帧提取是一项实用的技术,可以为多媒体应用如视频编辑、分析或信息检索等场景提供便利。通过熟悉FFmpeg命令和相应的Java库,开发者可以高效地实现这些功能。
Xuggler 提供了对视频流的解析和处理,包括获取视频流的时长、分辨率和文件大小等信息。 总结 Java 调用 FFmpeg 实现转换视频是一种常见的解决方案,通过 Java 语言调用 FFmpeg 的命令来实现视频格式的转换。这种...
4分45秒---9.99M---LabView05---第14章LabVIEW中子VI的设置及调用.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView05-第14章LabVIEW中子VI的设置及调用.wmv 34分30秒---61.03M---LabView06---第15章其它高级...
2. **获取视频时长** 使用FFmpeg,可以获取视频的总时长。在Java代码中,这通常通过执行一个FFmpeg命令来完成: ```java Process process = Runtime.getRuntime().exec("ffmpeg -i input.mp4 -f null -"); ...
3) 编写Java代码:使用Java调用FFmpeg命令行,执行转换操作。例如: ```java Process process = Runtime.getRuntime().exec("ffmpeg -i input.mp4 -hls_time 10 -hls_list_size 0 output.m3u8"); ``` 上述...
获取音频文件信息包括元数据(如艺术家、专辑、时长等)以及技术信息(如采样率、位深度、声道数等)。这个功能有助于了解音频文件的基本属性,从而在处理前做出适当的决策。例如,在上传音频到平台时,可能需要验证...