【发布时间】:2013-05-20 22:54:16
【问题描述】:
跑步
/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)?
编辑:固定格式
【问题讨论】:
-
提示 - 在发布之前在预览窗口中检查您的问题。这种格式对我来说看起来不太健康......
-
在不了解
/usr/bin/mediainfo的作用的情况下,您是否清楚必须如何解释参数以导致第二组输出?如果它通常只输出一个六位数的数字,这似乎特别奇怪。 -
如果一个命令的输出与另一个命令的输出不同,那么要么 (a) 命令行不同,要么 (b) 环境(当前工作目录、环境变量等)不同不同的。 (或者显然是(a)和(b)两者。)你能把
echo放在Runtime.getRuntime().exec()命令行前面并分享捕获的结果吗?通过这种方式,我们可以确定这两个命令行是否真的像您想象的那样相同。如果它们是相同,我们接下来将检查环境。我怀疑问题在于%Duration%没有像在“n -
回声?我该怎么做?
-
带有那组参数的 mediainfo 的输出应该以纳秒为单位返回电影的长度。所以一个六位数的数字是我对剪辑的期望~15mins
标签: java command-line