我正在尝试解析 ffmpeg -i 命令的一些输出。一些输出可能如下所示:
libavutil 50. 8. 0 / 50. 8. 0
libavcodec 52.52. 0 / 52.52. 0
libavformat 52.50. 0 / 52.50. 0
libavdevice 52. 2. 0 / 52. 2. 0
libswscale 0.10. 0 / 0.10. 0
libpostproc 51. 2. 0 / 51. 2. 0
Input #0, avi, from '/my/folder/clip.mpeg':
Duration: 00:05:25.00, start: 0.000000, bitrate: 554 kb/s
Stream #0.0: Video: msvideo1, rgb555le, 160x100, 10 tbr, 10 tbn, 10 tbc
如何解析倒数第二行的比特率值?我无法制作一个仅选取字符串中位置 x 处的值的静态解析器,因为输出有时会有所不同,因此我必须以某种方式使其动态化。
但是如何呢?
最佳答案
您可以使用正则表达式。 尝试这样的事情:
String text = "Duration: 00:05:25.00, start: 0.000000, bitrate: 554 kb/s";
final Pattern p = Pattern.compile(".?bitrate:\\s([0-9]*)\\skb/s");
final Matcher m = p.matcher(text);
if(m.find())
{
System.out.println(m.group(1));
}
有关 Java 和正则表达式的更多信息:http://docs.oracle.com/javase/tutorial/essential/regex/
关于Java:解析 ffmpeg 的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8447400/