Search code examples
cffmpeglibavcodeclibavformatlibav

How can I turn libavformat error messages off


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.


Solution

  • 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:

    Send the specified message to the log if the level is less than or equal to the current av_log_level. By default, all logging messages are sent to stderr. This behavior can be altered by setting a different av_vlog callback function.

    The API provides a function that will allow you to define your own callback:

    void av_log_set_callback(void (*)(void*, int, const char*, va_list));
    

    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.