java ffmpeg linux_Linux下Java代码中FFmpeg命令的执行问题

我在java代码中执行这个ffmpeg命令时遇到问题:

ffmpeg -i sample.mp4 -i ad.mp4 -filter_complex "[0:v]trim=0:15,setpts=PTS-STARTPTS[v0]; [1:v]trim=0:5,setpts=PTS-STARTPTS[v1]; [0:v]trim=20:30,setpts=PTS-STARTPTS[v2]; [v0][v1][v2]concat=n=3:v=1:a=0[out]" -map "[out]" output.mp4

我使用了下面的getRuntime()方法,但这对我不起作用。即使我简单地删除了“,它仍然不起作用。当我简单地复制粘贴终端中的等效字符串时,它就可以工作了

String c1=" -i "+dir+"sample.mp4 "+"-i "+dir+"ad.mp4 -fi‌​lter_complex [0:v]‌​trim=0:15,setpts=PTS‌​-STARTPTS[v0]; [1:v]trim=0:5,setpts=PTS-STARTPTS[v1]; [0:v]trim=20:30,setpts=PTS-STARTPTS[v2]; [v0][v1][v2]concat=n=3:v=1:a=0[out] -map [out] "+dir+"output.‌​mp4";

RunCommand("ffmpeg"+c1);

使用此方法:

private static void RunCommand(String command) throws InterruptedException {

try {

// Execute command

Process proc = Runtime.getRuntime().exec(command);

System.out.println(proc.exitValue());

// Get output stream to write from it

// Read the output

BufferedReader reader =

new BufferedReader(new InputStreamReader(proc.getInputStream()));

String line = "";

while((line = reader.readLine()) != null) {

System.out.print(line + "\n");

// System.out.println(ads.get(0));

}

proc.waitFor();

} catch (IOException e) {

}

}

这个也不起作用,打印退出值会显示:

Exception in thread "main" java.lang.IllegalThreadStateException: process hasn't exited

at java.lang.UNIXProcess.exitValue(UNIXProcess.java:423)

at parser.Parser.RunCommand(Parser.java:106)

at parser.Parser.commandGenerator2(Parser.java:79)

at parser.Parser.main(Parser.java:44)

如果我移动等待程序();在打印退出值之前,它是1

有什么问题吗?为什么它不能在Java代码中运行?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FFmpeg是一个开源的跨平台的音视频处理框架,而FFmpeg Java API则是基于Java语言封装了FFmpeg功能的一个库。 使用FFmpeg Java API,我们可以在Java程序方便地进行音视频的解码、编码、转码、剪切、合并等操作。通过调用FFmpeg的各种命令和参数,可以实现对音视频文件的各种处理需求。 FFmpeg Java API的主要特点包括: 1. 跨平台:由于基于Java语言开发,FFmpeg Java API可以在各种操作系统上使用,包括Windows、Linux、Mac等。 2. 功能强大:FFmpeg提供了丰富的音视频处理功能,FFmpeg Java API则封装了这些功能,使得在Java程序可以方便地调用。 3. 简单易用:FFmpeg Java API提供了简洁的接口和方法,使得开发者可以快速上手,并快速实现各种音视频处理需求。 4. 高效性能:FFmpeg本身就是一个高性能的音视频处理框架,而FFmpeg Java API则是通过JNI技术与Java进行交互,保证了高效的执行速度和内存管理。 除了基本的音视频编解码功能外,FFmpeg Java API还支持基于滤镜的视频处理、音频处理、字幕添加等功能,使得开发者可以实现更加丰富的音视频处理效果。 总而言之,FFmpeg Java API是一个功能强大、跨平台、简单易用的音视频处理库,可以帮助开发者在Java程序实现各种音视频处理需求。无论是简单的音视频格式转换,还是复杂的剪辑合成,FFmpeg Java API都能提供便捷的解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值