我试图在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
为空,表示regexp无法与查询匹配。如果我保存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; 39米[0米[0;39米[0米[0;39米
这使我怀疑一些编码问题。 有什么想法吗?
答案 0 :(得分:3)
那些看起来像终端控制代码; ANSI颜色代码更具体。 (参见http://en.wikipedia.org/wiki/ANSI_escape_code#Colors)如果ffmpeg有这样的选项,你可能需要考虑传递一个标志或什么来压制它们。 (通常,如果stdout是一个交互式终端,程序将自动检测并自行计算出来)