Trotz fehlerhafter AVI Datei meldet ffmpeg keinen Fehler

Xandy

Mitglied
Thread Starter
Dabei seit
09.03.2023
Beiträge
19
Reaktionspunkte
3
Wenn ich die angehängte AVI Datei mit ffmpeg auf Gültigkeit überprüfen möchte wird mir kein Fehler berichtet.
Dazu benutze ich folgendes Kommando:
Code:
ffmpeg -v error -i file_example_AVI_480_750kB_broken.avi -f null -

Die Ausgabe ohne `loglevel` (-v Schalter)
Code:
ffmpeg -i file_example_AVI_480_750kB_broken.avi -f null -
hingegen gibt eine kurze Meldung über "errors in P frame" aus:
Code:
ffmpeg version 6.0 Copyright (c) 2000-2023 the FFmpeg developers
  built with Apple clang version 14.0.3 (clang-1403.0.22.14.1)
  configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/6.0_1 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-audiotoolbox --enable-neon
  libavutil      58.  2.100 / 58.  2.100
  libavcodec     60.  3.100 / 60.  3.100
  libavformat    60.  3.100 / 60.  3.100
  libavdevice    60.  1.100 / 60.  1.100
  libavfilter     9.  3.100 /  9.  3.100
  libswscale      7.  1.100 /  7.  1.100
  libswresample   4. 10.100 /  4. 10.100
  libpostproc    57.  1.100 / 57.  1.100
Input #0, avi, from '/Users/Sujo/Documents/Computers & Technology/Software/Backup & Restore/CLI Backup Commands/check file integrity/sample_files/videos/file_example_AVI_480_750kB_broken.avi':
  Metadata:
    software        : Lavf57.19.100
  Duration: 00:00:30.61, start: 0.000000, bitrate: 194 kb/s
  Stream #0:0: Video: h264 (High) (H264 / 0x34363248), yuv420p(progressive), 480x270 [SAR 1:1 DAR 16:9], 30 fps, 30 tbr, 30 tbn
  Stream #0:1: Audio: aac (LC) ([255][0][0][0] / 0x00FF), 48000 Hz, stereo, fltp, 139 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> wrapped_avframe (native))
  Stream #0:1 -> #0:1 (aac (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
[h264 @ 0x138e375d0] concealing 76 DC, 76 AC, 76 MV errors in P frame
Output #0, null, to 'pipe:':
  Metadata:
    software        : Lavf57.19.100
    encoder         : Lavf60.3.100
  Stream #0:0: Video: wrapped_avframe, yuv420p(progressive), 480x270 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 30 fps, 30 tbn
    Metadata:
      encoder         : Lavc60.3.100 wrapped_avframe
  Stream #0:1: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
    Metadata:
      encoder         : Lavc60.3.100 pcm_s16le
frame=  901 fps=0.0 q=-0.0 Lsize=N/A time=00:00:30.54 bitrate=N/A speed= 679x   
video:422kB audio:5732kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

Ich habe ein Skript geschrieben, bei dem mir angezeigt wird, wenn eine Film-Datei fehlerhaft ist. Dabei benutze ich
Code:
ffmpeg -v error -i "$file" -f null -
Nun entwischt mir dabei diese Datei.
Warum wird mir der Fehler nicht angezeigt bzw. wie könnte ich das Problem lösen?
 
Ja, das ist der Fehler, aber er wird nicht durch
Code:
ffmpeg -v error -i file_example_AVI_480_750kB_broken.avi -f null -
angezeigt. Wenn ich das Kommando ausführe, erscheint keine Fehlermeldung. Ich habe gerade mal probiert, die Datei mir ffplay abzuspielen (was mir vorher nicht in den Sinn kam). Es funktioniert und es zeigen sich mir keine großen erkennbaren Fehler. Aber VLC spielt die Datei nicht ab. Jetzt weiß ich nicht, ob VLC der Maßstab sein sollte oder nicht.

Wie der Name verrät, ist es nur eine Beispieldatei. Ich habe eine Reihe solcher angelegt, um mein Skript zu testen, dass letztendendes alle Videodateien überprüfen soll.
 
Ffmpeg kann den Fehler halt verstecken also umgehen.
VLC verschluckt sich dran.
Hast IINA mal probiert?
 
  • Gefällt mir
Reaktionen: Xandy
Hmmm, IINA kannte ich noch nicht. Danke. Ich schau mir den mal an.
 
Du könntest in deinem Script auch anders parsen, ich meine die Fehler der Codecs kommen immer in der Form
[.*@.*]
 
Du meinst ich müsste nach einer Zeichenkette in regexp der Form [.*@.*] suchen? Also irgendwas mit einem '@' drin?

Ein bisschen "off topic": Kennst du zufällig eine KI Software, die Filme auch (weitgehend) reparieren kann? Falls sie gut ist und mich nicht den Verkauf einer Niere kostet, wäre ich auch bereit dafür zu bezahlen.
 
Zurück
Oben Unten