我正在尝试从avconv到grep的输出管道,但不知怎么的,管道没有正常工作。下列方法不起作用:
avconv -i MOVIE.mkv | grep SOMETHING --它应该只显示来自avconv的线条,其中包含了一些内容。
avconv -i MOVIE.mkv pipe: | grep SOMETHING --它应该只显示来自avconv的线条,其中包含了一些内容。
avconv -i MOVIE.mkv pipe:1 | grep SOMETHING --它应该只显示来自avconv的线条,其中包含了一些内容。
如何将信息从avconv输出到管道?
为什么不起作用?
这样的管道可以工作,但-i信息参数:avconv -codecs | grep "264"不行。
在12.04和12.10测试
发布于 2012-09-19 00:09:01
我是Junkie格式的开发人员之一,所以我知道avconv是如何工作的,我向您保证,它会将所有重要数据发送给stderr。所以,您需要从stderr获得grep。实际上,您将所有stderr重定向到stdout,然后转到grep:
例如:
avconv -i 111.avi 2>&1 | grep Duration正确的产出:
Duration: 00:01:05.02, start: 0.000000, bitrate: 2910 kb/sgrep之所以只在avconv的某些输出中工作,是因为这个特定的输出被分配给stdout,而不是stderr,因此它被成功地输送到grep。
通常,stderr用于输出错误消息,而stdout用于输出正常的信息消息。
stderr和stdout都存在,这并不坏,因为您可以以您想要的方式过滤输出。例如,请考虑以下几点:
command > log.txt 2> error_log.txt这将将所有正常输出(stdout)输出到log.txt,将所有错误(stderr)输出到error_log.txt。
我不知道为什么avconv专门使用stderr来显示它的消息。
https://askubuntu.com/questions/190368
复制相似问题