我怎样才能使ffmpeg变得更安静/更冗长?


116

默认情况下,ffmpeg会向stderr发送一整条消息:何时构建,如何构建,编解码器等,等等。

如何使它安静些?

我已经尝试过了-v 0(并且-v 10由于文档只是says谐地说Set the logging verbosity level.,没有说明输入范围是多少)-仍然不安静。

我已经尝试过-loglevel quiet-仍然不安静。

我应该提到的是,我在寻找“更安静”,而不是“永远都没有输出”。如果有错误,我希望看到它,但是我不需要每次都听到ffmpeg的配置。单。时间。


14
ffmpeg绝对是“针对开发人员的,按开发人员的”程序类型之一。
digitxp 2011年

1
使用-loglevel quiet -stats
fredsbend

或者-loglevel error -stats将显示错误“包括可以从中恢复的错误”,并使用来-stats确保打印编码进度和统计信息行。改变-loglevel来自errorwarning稍微冗长,但舒适适合一个终端页面上。
15:15

Answers:



117

我尚未对其进行测试,但是我在手册页中看到了一个可以做的选择:

ffmpeg -loglevel panic [rest of your ffmpeg stuff]

理论上应该这样做,以便仅记录严重错误


5
即使使用-loglevel panic,对我来说也只是减少一点输出-它仍然会打印版本信息,流映射,配置选项(甚至进度信息!)...。我可能不得不提到,这是最新svn干线的自动编译版本。
2012年

7
将其通过管道传输到位存储桶:> / dev / null 2>&1
rogerdpack

2
@rogerdpack适用于大多数程序,但ffmpeg会将其所有文本输出放到stderr而不是stdout(这样做是为了使您可以将编码器输出通过管道传输到其他程序),因此将stdout重定向到/ dev / null不会'做任何有用的事情。
evilsoup 2012年

20
使用-hide_banner除了降低详细级别将是一个很好的妥协。
Makaveli84 2014年

5
除了已说明的所有内容外,-nostats还将禁用进度输出。
2014年

56

在这里,您具有源代码中的日志级别(FFmpeg版本0.10.2.git)

const struct { const char *name; int level; } log_levels[] = {
        { "quiet"  , AV_LOG_QUIET   },
        { "panic"  , AV_LOG_PANIC   },
        { "fatal"  , AV_LOG_FATAL   },
        { "error"  , AV_LOG_ERROR   },
        { "warning", AV_LOG_WARNING },
        { "info"   , AV_LOG_INFO    },
        { "verbose", AV_LOG_VERBOSE },
        { "debug"  , AV_LOG_DEBUG   },
    };

5
尽管URL会随着时间而变化,但最好将URL也作为答案的来源。例如,目前在ffmpeg.org/ffmpeg.html#toc-Generic-options中有记录,即使该URL发生更改,读者也将知道在文档中的查找位置。
Fr0zenFyr 2015年

19

我成功使用了以下内容(撰写本文时,最新的FFMPEG版本):

-nostats -loglevel 0

然后在我的使用场景中绝对是安静的。


对ffmpeg 3.2中的此解决方案感到满意
BernhardDöbler16年

-nostats是我一直在寻找的东西。它将抑制进度输出(例如,在非终端环境中很有用)。
jox

可悲的是也-nostats隐藏了横幅。ffmpeg需要一个-show_banner选项;)
mgutt

18
ffmpeg -loglevel error [other commands]

这将隐藏横幅,仅显示错误。使用-loglevel warning,如果你想看到的警告。

在Ffmpeg 3.0.2中测试。

文档中

-loglevel [repeat +] loglevel | -v [repeat +] loglevel

设置库使用的日志记录级别。添加“ repeat +”表示不应将重复的日志输出压缩到第一行,并且将省略“最后消息重复n次”行。“重复”也可以单独使用。如果单独使用“重复”,并且未设置先前的日志级别,则将使用默认日志级别。如果给出了多个日志级别参数,则使用“ repeat”将不会更改日志级别。loglevel是包含以下值之一的字符串或数字:

安静-8

什么都不显示;安静。

“惊慌,0”

仅显示可能导致进程崩溃的致命错误,例如并断言失败。目前尚无此功能。

致命的8

仅显示致命错误。这些都是错误,之后绝对无法继续执行该过程。

错误16

显示所有错误,包括可以从中恢复的错误。

警告24

显示所有警告和错误。将显示与可能不正确或意外事件有关的任何消息。

'信息,32'

在处理过程中显示信息性消息。这是警告和错误的补充。这是默认值。

'verbose,40'

与相同info,但更为冗长。

'调试,48'

显示所有内容,包括调试信息。

痕迹56

默认情况下,程序会记录到stderr,如果终端支持着色,则使用颜色来标记错误和警告。可以通过设置环境变量AV_LOG_FORCE_NOCOLOR或禁用日志着色 NO_COLOR,或者可以强制设置环境变量AV_LOG_FORCE_COLOR。不建议使用环境变量NO_COLOR,它将在以下FFmpeg版本中删除。


5

以下在macOS上为我工作:

ffmpeg -v quiet

或仅查看进度:

ffmpeg -v quiet -stats

那正是我想要的。我使用的ffmpeg的脚本,需要看到的是它的工作,但不需要所有关于输入和输出流等信息
STIB

3

您可以通过grep传递stderr。例如,如果您想删除配置信息,则可以这样进行:

% ffmpeg -i infile.avi -s 640x480 outfile.avi >/dev/null 2>&1 | grep -v configuration:

我相信可能需要ffmpeg … 2>&1 >/dev/null | grep …
斯科特,

0

这有点便宜,但是附加>/dev/null 2>&1是确保ffmpeg在外壳中保持安静的肯定方法。

ffmpeg -f x11grab -y -r 24 -s 800x600 -i :0.0+1366,100 -f oss -i /dev/dsp3 -sameq ./out.avi >/dev/null 2>&1

有关bash输出的更多信息


14
除了ffmpeg比您领先一步外,它还将配置信息和实际错误输出到stderr。
blahdiblah 2011年

0

ffmpeg -loglevel error -hide_banner -nostats

只是错误,没有别的。

我个人最喜欢这个。

ffmpeg -loglevel warning -hide_banner -stats

它仅给出警告和错误,还显示工作进度。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.