「java执行ffmpeg」java执行jar包命令

博主:adminadmin 2023-03-17 18:11:06 315

本篇文章给大家谈谈java执行ffmpeg,以及java执行jar包命令对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

怎么用java读取ffmpeg输出流

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();

}

}

// 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;

}

*/

ListString commend=new java.util.ArrayListString();

// commend.add("e:\\videoconver\\ffmpeg\\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组件进行视频转换时不成功

FFMPEG没有java可以直接调用的API,网上那些基本上是通过调用cmd命令来实现转换的。这种方法很容易出错,效率低而且也不容易调试。最好的办法是让提供商提供flv格式的文件。如果不行你只有测试一下直接用FFMPEG的图形界面转看结果如何,然后尝试更换参数,视频文件和FFMPEG版本。

请教大神,java调用ffmpeg,将两段.wav音频,拼接成一段.wav音频,怎么做?

ffmpeg是c实现的,java想调它的api,起码要写一层jni出来,直接在jni层调用ffmpeg的api,然抛到java层去invoke.

当然还有一种,直接用命令实现,首先你需要编译出可以在你当前环境上运行的ffmpeg,然后配置好拼接音频的参数,使用Runtime的exec来执行这个命令,这种方法虽然简单,但是一旦换个执行环境可能就没有办法使用你本机编译的ffmpeg了,所以不推荐。

关于java执行ffmpeg和java执行jar包命令的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。