gpt4 book ai didi

java processbuilder ffmpeg 管道

转载 作者:行者123 更新时间:2023-12-01 11:30:42 24 4
gpt4 key购买 nike

我尝试在java中运行ffmpeg。这是我的代码:

String[] temp = {"ffmpeg\\ffmpeg.exe","-i","input_track.ac3","-threads","0","-af","volume=volume="0.0"dB","-acodec","pcm_s32le","-ac","6","-ar","48000","-f","wav","-","|","ffmpeg\\fdkaac","--ignorelength","-m","1","-o","ouput_track.aac","-"};

ProcessBuilder pb = new ProcessBuilder(temp);
Process p = pb.start();
int ev = 0;
if (p.waitFor() != 0)
{
ev = p.exitValue();
}

我在windows cmd上尝试了命令,这里有一个“|”的问题在 ffmpeg 命令行。

也许有人说我犯规了?

最诚挚的问候

最佳答案

这个问题类似于How to make pipes work with Runtime.exec()? ...只不过它适用于 Windows。

问题本质上是相同的:exec 方法不理解 shell 语法,例如管道、输入或输出方向等。解决方案本质上也是相同的:执行适当的 shell 并让它来处理 shell 语法。

在这种情况下,请尝试这样的操作:

String[] temp = new String[] {
"cmd", "/c",
"ffmpeg\\ffmpeg.exe -i input_track.ac3 -threads 0 " +
"-af volume=volume=\"0.0\"dB -acodec pcm_s32le -ac 6 " +
"-ar 48000 -f wav - | " +
"ffmpeg\\fdkaac --ignorelength -m 1 -o ouput_track.aac -"
};

请注意,实际命令是单个字符串。 (0.0 周围的引号看起来有点奇怪,但这就是您问题中的内容。)

关于java processbuilder ffmpeg 管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30422605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com