`
liang100100
  • 浏览: 37405 次
  • 性别: Icon_minigender_2
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

java调用ffmpeg获取视频时长

 
阅读更多
public static void main(String[] args) {  
  
    String result =    processFLV("E:\\video\\test.mp4");  
     
     
    PatternCompiler compiler =new Perl5Compiler();  
    try {  
        String regexDuration ="Duration: (.*?), start: (.*?), bitrate: (\\d*) kb\\/s";  
        String regexVideo ="Video: (.*?), (.*?), (.*?)[,\\s]";  
        String regexAudio ="Audio: (\\w*), (\\d*) Hz";  
     
        Pattern patternDuration = compiler.compile(regexDuration,Perl5Compiler.CASE_INSENSITIVE_MASK);  
        PatternMatcher matcherDuration = new Perl5Matcher();  
        if(matcherDuration.contains(result, patternDuration)){  
            MatchResult re = matcherDuration.getMatch();  
  
            System.out.println("提取出播放时间  ===" +re.group(1));  
            System.out.println("开始时间        =====" +re.group(2));  
            System.out.println("bitrate 码率 单位 kb==" +re.group(3));  
        }  
         
        Pattern patternVideo = compiler.compile(regexVideo,Perl5Compiler.CASE_INSENSITIVE_MASK);  
        PatternMatcher matcherVideo = new Perl5Matcher();  
         
        if(matcherVideo.contains(result, patternVideo)){  
            MatchResult re = matcherVideo.getMatch();  
            System.out.println("编码格式  ===" +re.group(1));  
            System.out.println("视频格式 ===" +re.group(2));  
            System.out.println(" 分辨率  == =" +re.group(3));  
        }  
         
        Pattern patternAudio = compiler.compile(regexAudio,Perl5Compiler.CASE_INSENSITIVE_MASK);  
        PatternMatcher matcherAudio = new Perl5Matcher();  
         
        if(matcherAudio.contains(result, patternAudio)){  
            MatchResult re = matcherAudio.getMatch();  
            System.out.println("音频编码             ===" +re.group(1));  
            System.out.println("音频采样频率  ===" +re.group(2));  
        }  
  
    } catch (MalformedPatternException e) {  
        e.printStackTrace();  
    }  
  
    }  
     
  
//  ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)  
    private static String processFLV(String inputPath) {  
/* 
      if (!checkfile(inputPath)){ 
          _log.warn(inputPath+" is not file"); 
          return false; 
         } 
*/  
        List<String> commend=new java.util.ArrayList<String>();  
         
//        commend.add("D:\\ffmpeg-20140727-git-ad91bf8-win32-static\\bin\\ffmpeg ");//可以设置环境变量从而省去这行  
       commend.add("ffmpeg");  
        commend.add("-i");  
        commend.add(inputPath);  
        
        try {  
  
            ProcessBuilder builder = new ProcessBuilder();  
            builder.command(commend);  
            builder.redirectErrorStream(true);  
            Process p= builder.start();  
  
           //1. start  
            BufferedReader buf = null; // 保存ffmpeg的输出结果流  
            String line = null;  
          //read the standard output  
  
            buf = new BufferedReader(new InputStreamReader(p.getInputStream()));  
             
            StringBuffer sb= new StringBuffer();  
            while ((line = buf.readLine()) != null) {  
             System.out.println(line);  
             sb.append(line);  
             continue;  
                 }  
            int ret = p.waitFor();//这里线程阻塞,将等待外部转换进程运行成功运行结束后,才往下执行  
            //1. end  
            return sb.toString();  
        } catch (Exception e) {  
//            System.out.println(e);  
            return null;  
        }  
    }  
分享到:
评论

相关推荐

    java中使用FFMpeg获取视频时长

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

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

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

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

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

    ffmpeg获取视频时长

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

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

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

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

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

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

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

    JAVA获取本地视频或者网络URL的时长.zip

    总的来说,获取视频时长需要对Java的文件I/O、网络请求以及多媒体处理有一定的了解。使用合适的库可以简化这个过程,提高效率。在实际应用中,确保处理的健壮性和效率是非常重要的,例如处理网络延迟、错误重试等。

    Java 获取视频时长、格式、大小需要的jar

    1. **获取视频时长**: 视频时长通常存储在视频文件的元数据中,JAVE可以通过解析这些数据来获取。以下是一个简单的示例代码片段: ```java import it.sauronsoftware.jave.*; File source = new File("path_...

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

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

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

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

    javaffmpeg获取视频长度

    3. **获取视频时长**:视频流中包含了视频的详细信息,如编码、分辨率等。你可以通过`getDuration()`方法获取视频的持续时间,单位为微秒。 ```java long durationMicros = videoStream.map(FFmpegStream::...

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

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

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

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

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

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

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

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

    Java使用FFmpeg实现mp4转m3u8

    上述命令会将`input.mp4`转换为`output.m3u8`,`-hls_time 10`表示每个TS分片的时长为10秒,`-hls_list_size 0`表示不保留旧的TS文件,仅保留最新的分片。 4. 处理结果和错误: 在Java程序中,你需要监听`process...

    java 服务器使用ffmpeg处理视频工具类

    java 服务器处理使用ffmpeg处理视频工具类,使用前先按照ffmpeg,并将其安装目录的bin路径加入环境变量,目前主要实现压缩,转码,增加字幕(可设定字体及位置),获取视频时长及源数据信息等功能,也可再此基础上...

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

    因此,在使用Java和OpenCV从视频文件中获取帧时,需要确保视频文件格式正确并且ffmpeg已安装正确。 Java使用OpenCV从视频文件中获取帧是一个非常有用的技术,它可以应用于很多领域,例如视频监控、图像识别、视频...

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

    要使用`ffmpeg`在命令行获取视频时长,可以执行以下命令: ```bash ffmpeg -i input.mp4 -f null - 2&gt;&1 | grep "Duration" | awk '{print $2}' | tr -d ,' ``` 这个命令会输出视频的时长,格式通常是`HH:MM:SS.MS...

Global site tag (gtag.js) - Google Analytics