我试图在linux机器上读取ffmpeg返回的元数据。我在Matlab中使用system
命令来完成。我对regexp的调用找不到我要查找的内容(在windows上可以正常工作)。我正在解析的行如下所示:
持续时间:06:33:42.17,开始时间:0.000000,比特率:65kb/s
我正在用这样一个调用解析持续时间:
dur=regexp(w,'duration:[[0-9]+:]+[0-9]+','match');
其中w
保存从对ffmpeg的调用返回的字符串。结果是dur
为空,这意味着regexp无法匹配查询。如果我保存w
并将其加载到windows计算机上,我会看到这一点(我截断了行,但您可以理解这一点):
[0 m[0;39m[0;39m[0;39m[0;39m持续时间:[0 m[0;39m[0;39m[0;39m06:33:42.17[0;39m[0;39m[0;39m[0;39m[0;39m[0;39m]
这让我怀疑一些编码问题。
有什么想法吗?
最佳答案
这些看起来像终端控制代码;ANSI颜色代码更具体。(请参见http://en.wikipedia.org/wiki/ANSI_escape_code#Colors)如果ffmpeg有这样一个选项,您可能需要考虑传递一个标志或其他东西来抑制这些标志。(通常,程序会自动检测stdout是否是一个交互式终端,并自行解决这个问题)
关于regex - 从“系统”命令返回的字符串的编码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17199991/