如何关闭 libavformat 错误消息
默认情况下,libavformat 会将错误消息写入 stderr
,例如:
根据比特率估计持续时间,这可能不准确
如何将其关闭?或者更好的是,将其传输到我自己的简洁的日志记录功能?
编辑:将 stderr 重定向到其他地方是不可接受的,因为我需要它用于其他日志记录目的,我只是希望 libavformat 不要写入它。
By default, libavformat writes error messages to stderr
, Like:
Estimating duration from bitrate, this may be inaccurate
How can I turn it off? or better yet, pipe it to my own neat logging function?
Edit: Redirecting stderr to somewhere else is not acceptable since I need it for other logging purposes, I just want libavformat to not write to it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
查看代码,您似乎可以通过为
av_log
函数编写自己的回调函数来更改行为。从 libavutil/log 中对该函数的描述。 h:
,允许您定义自己的回调:
在您的情况下,您可以编写一个简单的回调函数,完全丢弃消息(或将它们重定向到专用日志等),而无需污染您的
stderr
流。Looking through the code, it appears you can change the behavior by writing your own callback function for the
av_log
function.From the description of this function in libavutil/log.h:
The API provides a function that will allow you to define your own callback:
In your case, you could write a simple callback function that discards the messages altogether (or redirects them to a dedicated log, etc.) without tainting your
stderr
stream.尝试一下
av_log_set_level(level)
!Give
av_log_set_level(level)
a try!包含此头文件
添加此代码将禁用日志
include this header file
add this code will disable the log
您可以将它们重定向到自定义文件,它将重定向所有 cerr 条目:
编辑:编辑问题后,我警告上面的代码它将重定向所有
cerr
入口流到file.txt
我不熟悉 libavformat,但如果它的代码不可更改,您可以在调用之前临时将
cerr
重定向到文件库的 api 并将其重定向到原始再次cerr
。(但是这是丑陋的方式)You can redirect them to a custom file, it will redirect all cerr entry:
Edit: After editing the question, i warn about above code that it will redirect all
cerr
entry stream tofile.txt
I'm not familiar with libavformat, but if its code is unchangeable, you can temporary redirect
cerr
to a file before calling library's api and redirect it to originalcerr
again.(However this is ugly way)