notificaciones eliminar desactivar como chrome c ffmpeg libavcodec libavformat libav

eliminar - desactivar notificaciones chrome android



¿Cómo puedo desactivar los mensajes de error de libavformat? (3)

De forma predeterminada, libavformat escribe mensajes de error en stderr , como:

Estimating duration from bitrate, this may be inaccurate

¿Cómo puedo apagarlo? o mejor aún, conectarlo a mi propia función de registro limpio?

Editar: Redireccionar stderr a otro lugar no es aceptable ya que lo necesito para otros fines de registro, solo quiero que libavformat no escriba en él.


Al mirar el código, parece que puede cambiar el comportamiento al escribir su propia función de devolución de llamada para la función av_log .

De la descripción de esta función en libavutil / log.h :

Envíe el mensaje especificado al registro si el nivel es menor o igual al av_log_level actual. Por defecto, todos los mensajes de registro se envían a stderr. Este comportamiento se puede modificar estableciendo una función de devolución de llamada av_vlog diferente.

La API proporciona una función que le permitirá definir su propia devolución de llamada:

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

En su caso, podría escribir una función de devolución de llamada simple que descarte los mensajes por completo (o los redirija a un registro dedicado, etc.) sin manchar su corriente stderr .


Puede redirigirlos a un archivo personalizado, redirigirá toda la entrada de cerr :

#include <iostream> #include <fstream> using namespace std; int main() { ofstream file("file.txt"); streambuf *old_cerr = cerr.rdbuf(); cerr.rdbuf (file.rdbuf()); cerr << "test test test" << endl; // writes to file.txt // ... cerr.rdbuf (old_cerr); // restore orginal cerr return 0; }

Editar: Después de editar la pregunta, advierto sobre el código anterior que redirigirá todo el cerr entrada cerr a file.txt

No estoy familiarizado con libavformat, pero si su código no se puede cambiar, puede redirigir temporalmente cerr a un archivo antes de llamar a la API de la biblioteca y redirigirla a la cerr original cerr vez. (Sin embargo, esta es la manera fea)


¡Prueba av_log_set_level(level) !