Question ffmpeg: Essayer de prendre des vignettes fps = fps = 1/60 œuvres mais pas fps / fps = 1/600


Je suis ce document depuis le site ffmpeg:

Cela créera une image miniature à chaque minute, nommée img001.jpg,   img002.jpg, img003.jpg, ... (% 03d signifie le nombre ordinal de chaque   la vignette doit être formatée avec 3 chiffres)

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

Cela créera une image miniature toutes les 10 minutes, nommée   thumb0001.bmp, thumb0002.bmp, thumb0003.bmp, ...

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

Mais si j'utilise les options 1/600, cela ne fonctionne pas et donne l'erreur suivante:

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

Pourquoi le 1/60 fonctionne-t-il et non le 1/600? Comment le réparer? La mise à jour du serveur n'est pas non plus une option.


2
2017-12-01 23:39


origine


Quelle est la valeur la plus basse qui donne encore ces erreurs? Est-ce que cette valeur change avec d'autres entrées? Test avec un compilation statique récente de ffmpeg sera utile (juste télécharger, extraire et exécuter). - LordNeckbeard


Réponses:


Je ne sais pas encore pourquoi les paramètres par défaut pour la sortie jpg en utilisant le fps filtre vidéo avec certaines valeurs provoque les erreurs:

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

Exemple

Une solution consiste à utiliser le -qscale:v (ou l'alias -q:v) option:

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

Remarques

  • La gamme efficace pour -qscale:v lors de la sortie en jpeg, une échelle linéaire de 2-31. Une valeur inférieure est une qualité supérieure.

  • -f image2 n'est pas nécessaire

  • Vous pouvez également omettre le supplément fps= comme indiqué dans mon exemple.

  • Une autre solution consiste à utiliser un format de sortie différent, tel que png, mais cette solution peut ne pas être acceptable pour vous.

  • Une autre solution possible consiste à utiliser le select filtre vidéo à la place, mais ce n’est pas aussi convivial.

  • En utilisant -threads 1 élimine le ff_frame_thread_encoder_init failed erreur, mais pas l'autre erreur.

  • Les mêmes erreurs apparaissent lors de l'utilisation -r à la place du fps filtre.

Je mettrai à jour cette réponse si j'en découvre plus (j'ai manqué de temps pour faire une enquête appropriée ...).


2
2017-12-02 05:38