`
gaozzsoft
  • 浏览: 427139 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

java调用ffmpeg获取视频文件信息参数代码

 
阅读更多


  1.  public static void main(String[] args) {  
  2.   
  3.     String result =    processFLV("E:\\test\\京视传媒\\体育类\\xiao.flv");  
  4.      
  5.      
  6.     PatternCompiler compiler =new Perl5Compiler();  
  7.     try {  
  8.         String regexDuration ="Duration: (.*?), start: (.*?), bitrate: (\\d*) kb\\/s";  
  9.         String regexVideo ="Video: (.*?), (.*?), (.*?)[,\\s]";  
  10.         String regexAudio ="Audio: (\\w*), (\\d*) Hz";  
  11.      
  12.         Pattern patternDuration = compiler.compile(regexDuration,Perl5Compiler.CASE_INSENSITIVE_MASK);  
  13.         PatternMatcher matcherDuration = new Perl5Matcher();  
  14.         if(matcherDuration.contains(result, patternDuration)){  
  15.             MatchResult re = matcherDuration.getMatch();  
  16.   
  17.             System.out.println("提取出播放时间  ===" +re.group(1));  
  18.             System.out.println("开始时间        =====" +re.group(2));  
  19.             System.out.println("bitrate 码率 单位 kb==" +re.group(3));  
  20.         }  
  21.          
  22.         Pattern patternVideo = compiler.compile(regexVideo,Perl5Compiler.CASE_INSENSITIVE_MASK);  
  23.         PatternMatcher matcherVideo = new Perl5Matcher();  
  24.          
  25.         if(matcherVideo.contains(result, patternVideo)){  
  26.             MatchResult re = matcherVideo.getMatch();  
  27.             System.out.println("编码格式  ===" +re.group(1));  
  28.             System.out.println("视频格式 ===" +re.group(2));  
  29.             System.out.println(" 分辨率  == =" +re.group(3));  
  30.         }  
  31.          
  32.         Pattern patternAudio = compiler.compile(regexAudio,Perl5Compiler.CASE_INSENSITIVE_MASK);  
  33.         PatternMatcher matcherAudio = new Perl5Matcher();  
  34.          
  35.         if(matcherAudio.contains(result, patternAudio)){  
  36.             MatchResult re = matcherAudio.getMatch();  
  37.             System.out.println("音频编码             ===" +re.group(1));  
  38.             System.out.println("音频采样频率  ===" +re.group(2));  
  39.         }  
  40.   
  41.     } catch (MalformedPatternException e) {  
  42.         e.printStackTrace();  
  43.     }  
  44.   
  45.     }  
  46.      
  47.   
  48. //  ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)  
  49.     private static String processFLV(String inputPath) {  
  50. /* 
  51.       if (!checkfile(inputPath)){ 
  52.           _log.warn(inputPath+" is not file"); 
  53.           return false; 
  54.          } 
  55. */  
  56.         List<String> commend=new java.util.ArrayList<String>();  
  57.          
  58. //        commend.add("e:\\videoconver\\ffmpeg\\ffmpeg ");//可以设置环境变量从而省去这行  
  59.        commend.add("ffmpeg");  
  60.         commend.add("-i");  
  61.         commend.add(inputPath);  
  62.         
  63.         try {  
  64.   
  65.             ProcessBuilder builder = new ProcessBuilder();  
  66.             builder.command(commend);  
  67.             builder.redirectErrorStream(true);  
  68.             Process p= builder.start();  
  69.   
  70.            //1. start  
  71.             BufferedReader buf = null// 保存ffmpeg的输出结果流  
  72.             String line = null;  
  73.           //read the standard output  
  74.   
  75.             buf = new BufferedReader(new InputStreamReader(p.getInputStream()));  
  76.              
  77.             StringBuffer sb= new StringBuffer();  
  78.             while ((line = buf.readLine()) != null) {  
  79.              System.out.println(line);  
  80.              sb.append(line);  
  81.              continue;  
  82.                  }  
  83.             int ret = p.waitFor();//这里线程阻塞,将等待外部转换进程运行成功运行结束后,才往下执行  
  84.             //1. end  
  85.             return sb.toString();  
  86.         } catch (Exception e) {  
  87. //            System.out.println(e);  
  88.             return null;  
  89.         }  
  90.     }  
分享到:
评论
1 楼 junsheng100 2012-09-10  
请给个完整的例子吧!包括jar文件等

相关推荐

    java中使用FFMpeg获取视频时长

    在Java中使用FFmpeg获取视频时长,首先需要安装FFmpeg命令行工具,并将其添加到系统的PATH环境变量中,以便Java程序可以调用。此外,还需要引入一个Java的FFmpeg绑定库,例如`ffmpeg-java`或`fluent-ffmpeg`,这些库...

    java利用ffmpeg获取视频缩略图

    本项目就是关于如何在Java环境中使用ffmpeg来获取视频的缩略图,提供了一个简单易用的解决方案。 首先,ffmpeg是一个强大的命令行工具,它支持多种视频、音频格式的处理,包括转换、合并、剪辑以及生成缩略图等。在...

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

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

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

    Java使用FFmpeg解析视频、截图和获取播放时间的实践是一个重要的技术主题,尤其在多媒体处理领域。FFmpeg是一个强大的开源工具集,包含了多种用于处理音频和视频的工具,如ffprobe、ffmpeg等。在Java中集成FFmpeg,...

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

    总结来说,通过Java调用FFmpeg获取视频时长的关键知识点包括了解FFmpeg的功能和作用、掌握Java中ProcessBuilder类的使用方法、熟悉正则表达式在字符串匹配中的应用以及对FFmpeg命令输出结果的解析。掌握这些知识点后...

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

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

    java调用ffmpeg转换视频格式为flv

    Java调用FFmpeg转换视频格式为...总之,Java调用FFmpeg转换视频格式是一项常见任务,涉及到系统进程调用、第三方库的使用,以及对FFmpeg命令和参数的理解。通过合理的编程实践,我们可以构建稳定、高效的视频处理功能。

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

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

    windows下java调用ffmpeg视频处理环境搭建

    在Windows环境下,使用Java调用FFmpeg进行视频处理是一项常见的任务,尤其在开发涉及多媒体处理的应用时。FFmpeg是一款强大的跨平台的音频和视频处理工具,而Java则是一种广泛使用的编程语言,它提供了丰富的库来与...

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

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

    java调用ffmpeg详细步骤

    使用Java语言调用终端开启关闭Nginx服务器,然后执行ffmpeg命令,开启转流推流。以及其它指令,来学习吧

    java封装ffmpeg截取视频图片

    Java 封装FFmpeg库是将FFmpeg的强大功能与Java编程语言相结合的一种方式,使得开发者在Java环境中可以方便地处理视频和音频文件。FFmpeg是一个跨平台的解决方案,用于处理多媒体数据,包括视频转码、视频剪辑、视频...

    ffmpeg获取视频时长

    根据提供的文件信息,我们可以深入探讨如何使用FFmpeg来获取视频的关键属性,如视频时长、码率、编码格式、分辨率以及音频的相关信息,并且通过Java编程语言实现这一过程。 ### FFmpeg简介 FFmpeg是一个非常强大的...

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

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

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

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

    用JAVA获取视频文件中的帧图片并等比缩放

    通过使用Java语言和javacv库,我们可以快速获取视频文件中的帧图片,并对其进行等比缩放,以满足不同的应用需求。 知识点一:视频文件中的帧图片获取 * 视频文件中的帧图片获取是指从视频文件中抽取出每一帧图片的...

    javaffmpeg获取视频长度

    JavaFFmpeg是一个强大的Java库,它是FFmpeg命令行工具的Java接口,允许开发者在Java应用程序中处理音频和视频文件。这个案例聚焦于如何利用JavaFFmpeg来获取视频的长度,这是多媒体处理中一个常见的需求。FFmpeg是一...

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

    当然,为了更精确地截取特定帧,你需要解析视频的时长信息,并根据需要调整`-vframes`参数。 总结来说,通过Java后台结合`ffmpeg.jar`,我们可以轻松地实现从视频中截取特定帧图片的功能。这涉及到了FFmpeg的加载、...

    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"); ``` 上述...

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

    本文将详细介绍如何使用Java和OpenCV从视频文件中获取帧,并提供了具体的代码实例。 OpenCV是计算机视觉和机器学习的开源库,它提供了大量的图像和视频处理函数库。Java是最流行的编程语言之一,使用Java和OpenCV...

Global site tag (gtag.js) - Google Analytics