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.
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.
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
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>
Tags und Links c ffmpeg libavcodec libav libavformat