Was sind die richtigen Optionen, um Videodateien mithilfe von "ffmpeg.exe" in Windows 7 zu überprüfen?

7556
xmux

Ich habe Tausende von Videodateien, um zu überprüfen / überprüfen, ob sie einen Fehler oder eine Warnung enthalten. Eine Firma hat sie gerade über alte Bänder digitalisiert (VHS, Umatic ...). All diese Videos sind im mp4-Format und ich möchte sie automatisch mit einer Software überprüfen. Nach einer kleinen Suche fand ich diese Website ( http://videofilechecker.com/ ), aber es gibt keine Testversion der Software, sodass ich sie nicht mit meinen Videodateien testen konnte. Dann habe ich gesehen, dass die Software ffmpeg verwendet, um all diese Videos zu überprüfen. Bei meiner zweiten Suche habe ich diese Frage im Superuser gefunden. ( Wie kann ich die Integrität einer Videodatei überprüfen (avi, mpeg, mp4 ...)? ).

In dieser Frage lautet die Antwort:

ffmpeg.exe -v 5 -i file.avi -f null - >error.log 

Ich habe das error.log überprüft und es war komplett leer (Wahrscheinlich gab es keinen Fehler im Video)

aber ich habe die dokumentation des ffmpeg recherchiert und ein paar andere Sachen gefunden wie:

ffmpeg.exe -v error -i file.mp4 -f null - >error.log 

aber dann bekam ich einen fehler:

Unknown input format: null Failed to set value 'null' for option 'f': Error number -22 occurred 

Wenn ich es versuche, -v 5gibt es überhaupt keinen Fehler, aber in der Dokumentation wird mit geschrieben-v error

Mit meinem begrenzten Wissen über die Videoüberprüfung bin ich mir nicht so sicher, mit welchen Optionen ich mit ffmpeg alle diese Dateien überprüfen sollte. Mein nächstes Problem ist auch, ein Batch-Skript in Windows zu schreiben, das alle Dateien nacheinander prüft. Wenn ein Fehler auftritt, wird es in eine Protokolldatei geschrieben, die den Dateinamen enthält. Hat jemand eine Software-Idee oder ein Skript, um diese Videos zu überprüfen?

3
ffmpeg schreibt seine Informationen in `STDERR` und nicht in` STDOUT`. Mit `> error.log` werden Sie also nichts sehen. Sie benötigen "2> error.log". Bitte zeigen Sie uns die vollständige Fehlerausgabe für den Fehler, den Sie mit "-v error" erhalten (versuchen Sie auch "-loglevel error"). Schauen Sie sich auch die Option `-err_detect` an. slhck vor 11 Jahren 0
@xmux Ich habe deinen Titel bearbeitet, da er nicht viel Sinn machte. Du kannst ihn wieder ändern, wenn du nicht einverstanden bist Tog vor 11 Jahren 0
Ich habe sowohl ffmpeg.exe -v error -i file.mp4 -f null - 2> error.log `als auch ffmpeg.exe -loglevel error -i file.mp4-2> error.log ausprobiert, aber die Protokolldatei ist immer noch vorhanden leeren. bedeutet das video keine fehler? und andererseits `-err_detect` welche Option sollte ich mit diesem Crccheck versuchen, Bitstream ...? xmux vor 11 Jahren 0
Wenn Sie ffmpeg ohne Ausgabeumleitung ausführen, wird die vollständige Debugging-Ausgabe einschließlich der Version usw. angezeigt. Bitte geben Sie diese an. Sie sollten in der Lage sein, diese Ausgabe in eine beliebige Datei umzuleiten. Möglicherweise funktioniert die Ausgabeumleitung unter Windows anders, aber "2>" funktioniert für ffmpeg unter Linux / Unix. slhck vor 11 Jahren 0
@Tog aber wenn es eine Softwarelösung wie videofilechecker gibt, möchte ich die Softwarelösung mit GUI verwenden. xmux vor 11 Jahren 0
@slhck `ffmpeg.exe -v 5 -i file.avi -f null -> error.log` steht in der Antwort auf die andere Frage für Windows! Ich habe kein Linux / Unix, um es jetzt zu testen. xmux vor 11 Jahren 0
Okay, ich habe es gerade überprüft. Versuchen Sie "-v error" anstelle von "-v 5". Wenn Sie keine Ausgabe erhalten, ist kein Fehler aufgetreten. Haben Sie tatsächlich Dateien, die Fehler aufweisen? Ich bin mir nicht sicher, ob es mit FFmpeg zuverlässig möglich ist, diese zu überprüfen. slhck vor 11 Jahren 1
@xmux Das Problem bei der offenen Abfrage einer Softwareempfehlung auf dieser Site besteht darin, dass Ihre Frage als "Off Topic" gemäß der FAQ geschlossen werden könnte. Tog vor 11 Jahren 0
Ich fand auch ein anderes Programm mplayer: `mplayer -ao null -vo null die Datei.mp4` mit diesen Optionen können Sie die defekten Frames überprüfen und nach Fehlern in stdout suchen. xmux vor 11 Jahren 0

1 Antwort auf die Frage

3
Amiramix

Das ist was ich benutze:

./ffmpeg.exe -v debug -threads 8 -nostats -i "path/to/file.ts" -f null - >~/error.log 2>&1 

Oder:

./ffmpeg.exe -v debug -threads 8 -nostats -i "path/to/file.ts" -f null - 2>~/error.log 

Der zweite leitet nur den stderr in eine Datei um, während der erste sowohl stderr als auch stdout umleitet.

Die Option -v debugdruckt alle Fehler, Warnungen und Debug-Informationen aus und kann daher beim Vergleich zweier Videodateien hilfreich sein (z. B. um festzustellen, welche weniger Fehler aufweist). Um den Bericht einzuschränken, verwenden Sie gemäß der ffmpeg-Dokumentation andere Ebenen:

https://www.ffmpeg.org/ffmpeg.html

Achten Sie auf die Option: -loglevel [repeat+]loglevel | -v [repeat+]loglevel. Die anderen Ebenen sind quiet, panic, fatal, error, warning, info, verbose, debug.