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

如何使它更安静?

我已经尝试过-v 0(和-v 10,因为文档只是说Set the logging verbosity level.却没有说明输入范围是多少)-仍然不安静。

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

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

评论

ffmpeg绝对是“对于开发人员来说,按开发人员的程序类型”之一。

使用-loglevel quiet -stats。

或者,-loglevel错误-stats将显示错误“包括可以从中恢复的错误”,并且使用-stats可确保打印编码进度和统计信息行。将-loglevel从错误更改为警告稍微有些冗长,但可以轻松地在一个终端页面上显示。

如果您希望减少冗长的中间过程,则可以按-并按Enter键,而要增加它,可以进行shift和=(或+)并按Enter来增加它。

#1 楼

ffmpeg -hide_banner -loglevel panic

在当前答案下方的评论中被提及。
选项-hide_banner于2013年末推出-https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2013-December /152349.html)
-loglevel warning似乎比-loglevel panic更好。查看评论。

评论


最佳答案,但是-show-banner选项比隐藏它会更好

– hetepeperfan
18年5月16日在15:23



也许也添加-nostats?

– Mikko Rantalainen
18年5月18日在8:28

不要使用'-loglevel panic'。 ffmpeg文档说:“当前未用于任何用途”。而是建议使用“ -loglevel警告”:“将显示与可能不正确或意外事件有关的任何消息。”

–小男孩
20 Mar 5 '20 at 9:51



我建议使用-loglevel fatal而不是-loglevel panic,它应该显示任何导致ffmpeg退出的错误。恐慌甚至更加极端,可能并不能真正以有意义的方式得到支持(仅适用于断言),该警告会打印出各种信息,在某些情况下,这些信息可能超出了预期(例如,您只是想把它完成而无所谓)如果媒体出现故障)。

– GregD
20年8月19日在15:29

我想产生与-loglevel info -nostats相反的效果。我希望它显示编码进度,但不显示文件的内部元数据。

– Paul
20/09/10在21:04

#2 楼

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

ffmpeg -loglevel panic [rest of your ffmpeg stuff]


应该这样做,因此理论上只记录严重的错误

评论


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

–编码
2012年4月30日11:42



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

–rogerdpack
2012年8月2日在15:05

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

– evilsoup
2012年12月21日14:29

除了降低详细程度外,还使用-hide_banner是一个不错的折衷方案。

–Makaveli84
14年8月12日在16:14

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

– Ely
2014年10月13日在12:23

#3 楼

在这里,您具有源代码中的日志级别(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   },
    };


评论


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

–Fr0zenFyr
2015年12月15日上午8:01

#4 楼

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

-nostats -loglevel 0


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

评论


对ffmpeg 3.2中的此解决方案感到满意

– BernhardDöbler
16 Dec 24 '15:12

-nostats是我想要的。它将抑制进度输出(例如,在非终端环境中很有用)。

– jox
19年7月12日在16:46

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

– mgutt
19年8月9日在22:30



@mgutt,但这不是最不重要的信息吗?例如,如果要隐藏实际内容,那么为什么要显示横幅?只是好奇

– Sreenikethan I
20年7月4日在4:51

#5 楼

ffmpeg -loglevel error [other commands]


这会隐藏标语,仅显示错误。如果要查看警告,请使用-loglevel warning

已在Ffmpeg 3.0.2。中进行了测试。

来自文档:


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

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

'quiet,-8'

什么也不显示;请保持沉默。

‘紧急,0’

仅显示致命错误,这些错误可能导致进程崩溃,例如
并断言失败。目前没有任何使用。

致命8,

仅显示致命错误。这些错误将导致进程
绝对不能继续执行。

'error,16'

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

'warning,24'

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

‘info,32'这是对
警告和错误的补充。这是默认值。

'verbose,40'

info相同,但更为冗长。

'debug,48'

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

'trace,56'

默认情况下,如果
在终端上,颜色用于标记错误和警告。日志着色
可以通过设置环境变量
AV_LOG_FORCE_NOCOLORNO_COLOR禁用,或者可以强制设置
环境变量AV_LOG_FORCE_COLOR。不建议使用环境变量
NO_COLOR,它将在以下版本的FFmpeg中删除。


#6 楼

以下在macOS上对我有用:

ffmpeg -v quiet


或仅查看进度:

ffmpeg -v quiet -stats


评论


那正是我想要的。我在脚本中使用ffmpeg,需要查看其是否正常运行,但不需要有关输入和输出流等的所有信息。

–stib
19年2月26日在5:01

哇谢谢你。最后,一个命令隐藏了所有的争用主线(除非您不知道要处理的内容,通常这样做是...),但仍显示进度!到现在为止,它看起来像是一个“有/有”案例。

–乔纳斯(Jonas)
20年5月20日在19:54



#7 楼

ffmpeg -loglevel error -hide_banner -nostats

只是错误,没有别的。

我个人最喜欢;

ffmpeg -loglevel warning -hide_banner -stats

警告和错误,还可以显示工作进度。

#8 楼

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

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


评论


我相信可能需要ffmpeg…2>&1> / dev / null | grep…。

–斯科特
13年4月17日在15:37

#9 楼

这有点便宜,但是添加>/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输出的更多信息

评论


ffmpeg比您领先一步,并且将配置信息和实际错误输出到stderr。

– blahdiblah
11年8月23日在19:19

#10 楼

这些措施不会隐藏编解码器标语(即使使用“ -loglevel 0”也是如此)。要隐藏H.265横幅,它应如下所示:
-vcodec libx265 -x265-params log-level=error