Wie kann ich libavformat Fehlermeldungen abschalten?

8

Standardmäßig schreibt libavformat Fehlermeldungen in stderr , Like:

Estimating duration from bitrate, this may be inaccurate

Wie kann ich es ausschalten? oder besser noch, es zu meiner eigenen ordentlichen Logging-Funktion leiten?

Bearbeiten: Das Umleiten von stderr an eine andere Stelle ist nicht akzeptabel, da ich es für andere Protokollierungszwecke brauche. Ich möchte nur, dass libavformat nicht darauf schreibt.

    
amrhassan 16.10.2011, 19:44
quelle

3 Antworten

7

Wenn Sie sich den Code ansehen, können Sie das Verhalten ändern, indem Sie eine eigene Callback-Funktion für die av_log -Funktion schreiben.

Aus der Beschreibung dieser Funktion in libavutil /log.h :

  

Senden Sie die angegebene Nachricht an das Protokoll, wenn die Ebene kleiner oder gleich ist   zum aktuellen av_log_level. Standardmäßig werden alle Protokollierungsnachrichten an gesendet   stderr. Dieses Verhalten kann durch einen anderen av_vlog-Callback geändert werden   Funktion.

Die API bietet eine Funktion, mit der Sie Ihren eigenen Rückruf definieren können:

%Vor%

In Ihrem Fall könnten Sie eine einfache Callback-Funktion schreiben, die die Nachrichten vollständig verwirft (oder sie an ein dediziertes Protokoll weiterleitet usw.), ohne Ihren stderr -Stream zu verpatzen.

    
Ben 16.10.2011, 20:47
quelle
5

Gib av_log_set_level(level) einen Versuch!

    
cpl 27.10.2011 10:48
quelle
1

Sie können sie in eine benutzerdefinierte Datei umleiten, es leitet alle cerr-Einträge um :

%Vor%

Bearbeiten: Nach dem Bearbeiten der Frage warne ich den obigen Code, dass alle cerr -Einträge in file.txt

umgeleitet werden

Ich bin nicht vertraut mit libavformat, aber wenn sein Code unveränderbar ist, können Sie temporär cerr in eine Datei umleiten, bevor Sie die Bibliotheks-API aufrufen und sie wieder an die ursprüngliche cerr umleiten (dies ist jedoch hässlich) / p>     

Dennis Ritchie 16.10.2011 19:52
quelle