gpt4 book ai didi

java - Runtime.getRuntime().exec() 输出与直接执行命令行程序不同

转载 作者:行者123 更新时间:2023-12-01 17:23:42 36 4
gpt4 key购买 nike

正在运行

/usr/bin/mediainfo --Inform='Video;%Duration%' /home/daniel/upload/videos/4/f/6/e/f/4f6ef2e0d67c4.flv

从终端给我这个输出

903520

并在java中运行它

        Process p1;
try {
p1 = Runtime.getRuntime().exec("/usr/bin/mediainfo --Inform='Video;%Duration%' /home/daniel/upload/videos/4/f/6/e/f/4f6ef2e0d67c4.flv");

BufferedReader input1 = new BufferedReader(new InputStreamReader(p1.getInputStream()));
String line1;
while ((line1 = input1.readLine()) != null) {
System.out.println("-"+line1);
}
input1.close();

p1.waitFor();


} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

结果

-General
-Complete name : /home/daniel/upload/videos/4/f/6/e/f/4f6ef2e0d67c4.flv
-Format : Flash Video
-File size : 62.0 MiB
-Duration : 15mn 3s
-Overall bit rate : 576 Kbps
-Tagging application : Yet Another Metadata Injector for FLV - Version 1.4
-
-Video
-Format : AVC
-Format/Info : Advanced Video Codec
-Format profile : High@L2.0
-Format settings, CABAC : Yes
-Format settings, ReFrames : 4 frames
-Codec ID : 7
-Duration : 15mn 3s
-Bit rate : 512 Kbps
(much more here) ...

如何从 Runtime.getRuntime().exec(cmd) 获取所需的输出 (903520)?

编辑:固定格式

最佳答案

命令行 shell 为您带来了一些魔法,而 Runtime.exec() 为您做这些事情。

在这种情况下,我猜想 shell 会解释(并省略)命令行中的 ' 标记。

所以请尝试这个版本,其中 ' 已被删除,并且命令行已被手动分割成多个部分(另一个常见问题):

String[] args = new String[]{
"/usr/bin/mediainfo",
"--Inform=Video;%Duration%",
"/home/daniel/upload/videos/4/f/6/e/f/4f6ef2e0d67c4.flv"
};
Runtime.getRuntime().exec(args);

关于java - Runtime.getRuntime().exec() 输出与直接执行命令行程序不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16651808/

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