1

我正在尝试在 Linux 机器上读取从 ffmpeg 返回的一些元日期。我正在使用system命令从 Matlab 执行此操作。我对 regexp 的调用未能找到我正在寻找的内容(它在 Windows 上工作正常)。我正在解析的行如下所示:

时长:06:33:42.17,开始:0.000000,比特率:65 kb/s

我正在用这样的调用解析持续时间:

dur = regexp(w, '持续时间: [[0-9]+:]+.[0-9]+','match');

wherew保存从调用 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

这让我怀疑一些编码问题。有任何想法吗?

4

1 回答 1

3

那些看起来像终端控制代码;ANSI 颜色代码更具体。(请参阅http://en.wikipedia.org/wiki/ANSI_escape_code#Colors)如果 ffmpeg 有这样的选项,您可能需要考虑传递一个标志或其他东西来抑制这些。(通常,程序会自动检测 stdout 是否是交互式终端并自行判断)

于 2013-06-19T19:49:23.193 回答