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获取视频的时长
java调用ffmpeg转换视频,并读取转换后视频的分辨率、大小以及时长。主要参考http://blog.sina.com.cn/s/blog_a5116c670102wiwj.html 的代码方式。步骤: 1.研究java如何调用外部程序 2.研究ffmpeg转换视频格式的...
ffmpeg获取视频时长,码率,编码格式,视频格式,分辨率,音频编码 ,音频采样频率等信息,用JAVA实现的。
通过ffmpeg获取视频文件的视频时间长度信息,可以获取各种保存在本地的视频文件中的视频时长信息。完整的C代码和codeblocks工程,没有使用ffmpeg命令,是调用的ffmpeg API方式实现的,在linux下可直接编译和测试通过...
这是一个java利用ffmpeg获取视频缩略图的java工程,里面有什么都有了,你只需要导入你的myeclpise,然后运行,看效果就是了,总共就一个类,二十多行代码
ffmpeg命令调用获取视频长度等值 自己写的小项目里面使用的。 提取出播放时间 ===00:02:14.03 开始时间 =====1.999000 bitrate 码率 单位 kb==85 编码格式 ===h264 (High) 视频格式 ===yuv420p 分辨率 ===640x368
使用Java语言调用终端开启关闭Nginx服务器,然后执行ffmpeg命令,开启转流推流。以及其它指令,来学习吧
ffmpeg.exe能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等) 对ffmpeg.exe无法解析的文件格式(wmv9,rm,rmvb等), ...再把转换好的avi文件再用ffmpeg.exe转换成flv格式的视频文件。。。
FFmpeg解析视频,合并都可以,本项目只是用来获取视频长度,有点大材小用,但是目前能获取在线视频长度的资源的确是不多。VLC也是可以获取在线URL视频长度的,但是VLC有的在线视频也获取不到时长,这是补充方案,...
利用ffmpeg获取视频封面图,时长信息
windows下java处理视频的源码,功能有,获取视频格式转码、视频缩略图截取、视频切割、获取视频相关信息等。与“windows下java调用ffmpeg视频处理环境搭建”配套使用。
Java 获取视频时长、格式、大小需要的jar jave-1.0.2
java调用ffmpeg添加水印并且转换视频,代码中并没有判断哪些格式支持,那些不支持,mpg,mp4,avi,wmv基本都可以(传入格式),转换为flv avi mp4起码都没问题,其它的没事过ffmpeg是开源的支持的挺多的 补充:时间算错了,...
java调用视频转换工具ffmpeg,包含软件、详细文档及java代码。 ffmpeg.exe能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
工程已经打包,很详细的描述,所有工具都已打包好,这里主要是做了视频截图,视频播放时长的获取,其他的内容如果要获取自己可以重新添加命令获取。
util 类 内含 java-1.0.2.jar 开发人员可以使用JAVE 在不同的格式间转换视频和音频 例如将 AVI 转成 MPEG 动画 等等 ffmpeg 中可以完成的在 JAVE 都有对应的方法
windows下java调用ffmpeg对视频处理的环境搭建。自己总结,由于文件较大,在下一个附件中会附带,源码
java 调用 ffmpeg 进行视频转换以及截图
使用ffmpeg.exe获取文件属性信息,ffmpeg是java开发的用于多媒体文件编辑的命令行工具,有多个版本,功能比较强大,C#中可以在进程外异步调用这个工具 using (System.Diagnostics.Process pro = new System....