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获取视频时长
猜你喜欢
转载自liang100100.iteye.com/blog/2215439
今日推荐
周排行