【发布时间】:2013-06-19 19:45:04
【问题描述】:
我正在尝试在 Linux 机器上读取从 ffmpeg 返回的一些元数据。我正在使用 system 命令从 Matlab 执行此操作。我对 regexp 的调用未能找到我正在寻找的内容(它在 Windows 上运行正常)。我正在解析的行如下所示:
时长:06:33:42.17,开始:0.000000,比特率:65 kb/s
我正在通过这样的调用解析持续时间:
dur = regexp(w, '持续时间: [[0-9]+:]+.[0-9]+','匹配');
w 保存从调用 ffmpeg 返回的字符串。结果是dur 为空,表示正则表达式无法匹配查询。如果我保存 w 并将其加载到 Windows 机器上,我会看到这一点(我截断了该行,但您可以理解):
[0m[0;39m[0m[0;39m[0m[0;39m 持续时间:[0m[0;39m[0m[0;39m[0m[0;39m06:33:42.17[0m[0; 39m[0m[0;39m[0m[0;39m
这让我怀疑存在一些编码问题。 有什么想法吗?
【问题讨论】:
-
您对
system命令的确切调用是什么?您如何将输出输入到w? -
[s, w] = system([ffmpeg ' -i ' fnm]);,其中ffmpeg保存可执行文件的完整路径,fnm是输入音频文件。
标签: regex linux string matlab character-encoding