ffmpeg kann kein Thumbnail generieren

2

Ich benutze ffmpeg, um 10 .jpeg-Thumbnails aus einer Videodatei zu generieren. Meistens funktioniert es einwandfrei, aber für einige Dateien (z. B. eine 55-Sekunden-MP4-Datei) werden nur die ersten 4 von 10 Captures angezeigt. Im Übrigen wird der folgende Fehler angezeigt : Die
Ausgabedatei ist leer, es wurde nichts codiert (check -ss) / -t / -frames (falls verwendet)

Der Befehl, den ich zum Konvertieren verwende, ist dieser,
ffmpeg -ss 16 -i /path/source.mp4 -y -f image2 -t 0.001 -s 320*240 /path/thumb4.jpg
bei dem -ss ein Vielfaches von 4 ist und ab 20 nicht mehr funktioniert.

Befehlszeilenausgabe:

`# ffmpeg -ss 77 -i /path/source.mp4 -y -f image2 -t 0.001 -s 320*240 /path/thumb7.jpg  
ffmpeg version git-2013-02-25-b8f6912 Copyright (c) 2000-2013 the FFmpeg developers  
  built on Feb 25 2013 15:18:21 with gcc 4.4.5 (Debian 4.4.5-8)  
  configuration: --enable-shared --enable-libx264 --enable-gpl  
  libavutil      52. 17.103 / 52. 17.103  
  libavcodec     54. 92.100 / 54. 92.100  
  libavformat    54. 63.100 / 54. 63.100  
  libavdevice    54.  3.103 / 54.  3.103  
  libavfilter     3. 41.100 /  3. 41.100  
  libswscale      2.  2.100 /  2.  2.100  
  libswresample   0. 17.102 /  0. 17.102  
  libpostproc    52.  2.100 / 52.  2.100  
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/path/source.mp4':  
  Metadata:  
    major_brand     : mp42  
    minor_version   : 19529845  
    compatible_brands: mp42isom  
    creation_time   : 2013-03-20 21:45:43  
  Duration: 00:02:04.62, start: 0.000000, bitrate: 605 kb/s  
    Stream #0:0(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 64 kb/s  
    Metadata:  
      creation_time   : 2013-03-20 21:45:43  
      handler_name    : Sound Media Handler  
    Stream #0:1(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 720x480 [SAR 40:33 DAR 20:11], 983 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc  
    Metadata:  
      creation_time   : 2013-03-20 21:45:43  
      handler_name    : Video Media Handler  
Output #0, image2, to '/path/thumb7.jpg':  
  Metadata:  
    major_brand     : mp42  
    minor_version   : 19529845  
    compatible_brands: mp42isom  
    encoder         : Lavf54.63.100  
    Stream #0:0(eng): Video: mjpeg, yuvj420p, 320x240 [SAR 15:11 DAR 20:11], q=2-31, 200 kb/s, 90k tbn, 29.97 tbc  
    Metadata:
      creation_time   : 2013-03-20 21:45:43  
      handler_name    : Video Media Handler  
Stream mapping:  
  Stream #0:1 -> #0:0 (h264 -> mjpeg)  
Press [q] to stop, [?] for help  
frame=    0 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.00 bitrate=N/A      
video:0kB audio:0kB subtitle:0 global headers:0kB muxing overhead -inf%  
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)`  
Alex Flo
quelle

Antworten:

1

Wenn Sie angeben -t 0.001, wird möglicherweise nichts exportiert. Dies ist nicht die richtige Art zu sagen, dass Sie nur einen Frame benötigen. Die -tOption benötigt entweder Sekunden oder einen Zeitstempel im HH:MM:SS.mmmFormat.

Folgendes sollte funktionieren:

ffmpeg -ss 16 -i /path/source.mp4 -frames:v 1 -s 320x240 /path/thumb4.jpg

Beachten Sie, dass die -f image2Option nicht benötigt wird, da das richtige Ausgabeformat ohnehin ausgewählt wird.

slhck
quelle
Ich verstehe. Leider arbeite ich an einem erwachsenenorientierten Projekt, daher sind die einzigen seltsamen Arbeitsbeispiele Erwachsene. Wie auch immer, gemäß Ihrem Vorschlag habe ich versucht, die MP4-Datei in eine andere MP4-Datei umzuwandeln, und ich habe eine Fehlermeldung erhalten: Paket der Größe 3544 auf 682 abschneiden [h264 @ 0x6784e0] AVC: nal Größe 3534 [h264 @ 0x6784e0] no frame! Fehler beim Dekodieren von Stream 0: 1: Vorgang nicht zulässig [mov, mp4, m4a, 3gp, 3g2, mj2 @ 0x676040] Stream 1, Offset 0x8ffccb: Teildatei 3IgLCrIR37np070SlwOu.mp4: Ungültige Daten bei der Verarbeitung der Eingabe gefunden
Alex Flo
Das heißt, meine Testdatei ist kaputt?
Alex Flo
Ja in der Tat. Dies ist ein Dekodierungsfehler aufgrund eines fehlerhaften Streams - keine Ahnung, ob dies leicht zu reparieren ist.
Slhck
Aha. Vielen Dank. Ich starte ffmpeg über ein BASH-Skript. Ist Ihnen eine (einfache) Möglichkeit bekannt, BASH-Skripten mitzuteilen, dass ffmpeg mit einem Fehler fehlgeschlagen ist, sodass ich diese Option ebenfalls behandeln kann?
Alex Flo
1
Wenn Sie ausführen, ffmpeg -y -loglevel quiet -i input.mp4 … && echo "yay" || echo "nay"sollte dies Fehler abfangen, z. B. naybei einem fehlgeschlagenen Befehl drucken .
Slhck