Java:解析 ffmpeg 的输出

标签 java string parsing text

我正在尝试解析 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/

相关文章:

java - @RequestParam 与 @PathVariable

java - Java中使用 json-simple 将List转换为JsonObject

c++ - 匹配字符串长度;查找和替换;在 C++ 中删除 HTML 标签

string - 如何在 Bash case 语句中测试空字符串?

java - 如何从用户接受整数并将其存储在java中的int数组

java - 从 Parse 服务器获取数据以供离线使用

c - fgets 应该使用什么大小?

java - Penn 话语树库 (PDTB) 解析器

php - 如何解决 php json_decode 中的 JSON_ERROR_UTF8 错误?

解析 amotoen 的问题