java调用ffmpeg获取视频信息函数代码
2014年11月20日
⁄ 综合
⁄ 共 3319字 ⁄ 字号
小 中 大
-
public static void main(String[] args) {
-
-
String result = processFLV("E:\\test\\京视传媒\\体育类\\xiao.flv");
-
-
-
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();
-
}
-
-
}
-
-
-
-
private static String processFLV(String inputPath) {
-
-
-
-
-
-
-
List<String> commend=new java.util.ArrayList<String>();
-
-
-
commend.add("ffmpeg");
-
commend.add("-i");
-
commend.add(inputPath);
-
-
try {
-
-
ProcessBuilder builder = new ProcessBuilder();
-
builder.command(commend);
-
builder.redirectErrorStream(true);
-
Process p= builder.start();
-
-
-
BufferedReader buf = null;
-
String line = null;
-
-
-
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();
-
-
return sb.toString();
-
} catch (Exception e) {
-
-
return null;
-
}
-
}