ffmpeg: Der Versuch, ein Miniaturbild mit fps=fps=1/60 aufzunehmen, funktioniert, aber nicht mit fps/fps=1/600

ffmpeg: Der Versuch, ein Miniaturbild mit fps=fps=1/60 aufzunehmen, funktioniert, aber nicht mit fps/fps=1/600

Ich folge diesem Dokument von der ffmpeg-Site:

Dadurch wird jede Minute ein Miniaturbild mit den Namen img001.jpg, img002.jpg, img003.jpg usw. erstellt. (%03d bedeutet, dass die Ordnungszahl jedes Miniaturbilds dreistellig sein muss.)

ffmpeg -i myvideo.avi -f image2 -vf fps=fps=1/60 img%03d.jpg

Dadurch wird alle 10 Minuten ein Miniaturbild mit den Namen „thumb0001.bmp“, „thumb0002.bmp“, „thumb0003.bmp“ usw. erstellt.

ffmpeg -i test.flv -f image2 -vf fps=fps=1/600 thumb%04d.bmp

Aber wenn ich die Optionen 1/600 verwende, funktioniert es nicht und es wird der folgende Fehler angezeigt:

ffmpeg -i src/e0b4c83e7ab2ada44c2785d25b0d4a9d45fc0c66.3gp -f image2 -vf fps=fps=1/250 thumbs/images%d.jpg
ffmpeg version 1.0.3 Copyright (c) 2000-2012 the FFmpeg developers
  built on Oct 13 2013 21:48:31 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-3)
  configuration:
  libavutil      51. 73.101 / 51. 73.101
  libavcodec     54. 59.100 / 54. 59.100
  libavformat    54. 29.104 / 54. 29.104
  libavdevice    54.  2.101 / 54.  2.101
  libavfilter     3. 17.100 /  3. 17.100
  libswscale      2.  1.101 /  2.  1.101
  libswresample   0. 15.100 /  0. 15.100
Guessed Channel Layout for  Input Stream #0.1 : mono
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'src/e0b4c83e7ab2ada44c2785d25b0d4a9d45fc0c66.3gp':
  Metadata:
    major_brand     : 3gp4
    minor_version   : 512
    compatible_brands: isomiso23gp4
    creation_time   : 2013-11-27 14:02:52
  Duration: 00:05:01.33, start: 0.000000, bitrate: 177 kb/s
    Stream #0:0(und): Video: h263 (s263 / 0x33363273), yuv420p, 176x144 [SAR 12:11 DAR 4:3], 161 kb/s, 15 fps, 15 tbr, 15 tbn, 29.97 tbc
    Metadata:
      creation_time   : 2013-11-27 14:06:48
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: amr_nb (samr / 0x726D6173), 8000 Hz, mono, flt, 12 kb/s
    Metadata:
      creation_time   : 2013-11-27 14:06:48
      handler_name    : SoundHandler
[mjpeg @ 0x3621940] bitrate tolerance too small for bitrate
[mjpeg @ 0x363c1c0] ff_frame_thread_encoder_init failed
Output #0, image2, to 'thumbs/images%d.jpg':
  Metadata:
    major_brand     : 3gp4
    minor_version   : 512
    compatible_brands: isomiso23gp4
    Stream #0:0(und): Video: mjpeg, yuvj420p, 176x144 [SAR 12:11 DAR 4:3], q=2-31, 200 kb/s, 90k tbn, 0k tbc
    Metadata:
      creation_time   : 2013-11-27 14:06:48
      handler_name    : VideoHandler
Stream mapping:
  Stream #0:0 -> #0:0 (h263 -> mjpeg)
Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height

Warum funktioniert 1/60 und nicht 1/600? Wie kann ich das beheben? Auch das Aktualisieren des Servers ist keine Option.

Antwort1

Ich weiß noch nicht, warum die Standardeinstellungen für die JPG-Ausgabe bei Verwendung derfpsVideofilterbei bestimmten Werten treten die folgenden Fehler auf:

[mjpeg @ 0x3621940] bitrate tolerance too small for bitrate
[mjpeg @ 0x363c1c0] ff_frame_thread_encoder_init failed

Beispiel

-qscale:vUm dieses Problem zu umgehen, können Sie die Option (oder die Aliasoption ) verwenden -q:v:

ffmpeg -i input.mkv -vf fps=1/250 -qscale:v 2 output%d.jpg

Anmerkungen

  • Der effektive Bereich für -qscale:vdie Ausgabe im JPEG-Format ist eine lineare Skala von 2 bis 31. Ein niedrigerer Wert bedeutet eine höhere Qualität.

  • -f image2wird nicht benötigt.

  • Du kannst den Zusatz auch weglassen, fps=wie in meinem Beispiel.

  • Eine weitere Problemumgehung besteht darin, ein anderes Ausgabeformat wie beispielsweise PNG zu verwenden. Dies ist für Sie jedoch möglicherweise keine akzeptable Lösung.

  • Eine weitere mögliche Problemumgehung ist die Verwendung desselectVideofilterstattdessen, aber es ist nicht so benutzerfreundlich.

  • Die Verwendung -threads 1behebt den ff_frame_thread_encoder_init failedFehler, jedoch nicht den anderen Fehler.

  • -rBei Verwendung anstelle des Filters treten die gleichen Fehler auf fps.

Ich werde diese Antwort aktualisieren, wenn ich mehr herausfinde (mir ist die Zeit für eine gründliche Untersuchung ausgegangen ...).

verwandte Informationen