Como faço para converter um vídeo para GIF com sobreposição de texto usando ffmpeg

Como faço para converter um vídeo para GIF com sobreposição de texto usando ffmpeg

Atualmente estou tentando modificar este comando, que usa odividircomando do ffmpeg para fazer um gif

ffmpeg -y -ss 30 -t 3 -i input.flv -filter_complex "fps=10,scale=320:-1:flags=lanczos[x];[x]split[x1][x2];[x1]palettegen[p];[x2][p]paletteuse" output.gif

Isso funciona bem, o problema é quando tento adicionar uma sobreposição de texto ao gif usando ogolden ratio

ffmpeg -y -ss 30 -t 3 -i "input.mp4" -filter_complex "fps=10,scale=320:-1:flags=lanczos[x],drawtext=box=1:[email protected]:boxborderw=5:fontfile=font3.ttf:text='Stackoverflow':fontsize=24:fontcolor=white:x=(w-tw)/2:y=(h/PHI)+th[x];[x]split[x1][x2];[x1]palettegen[p];[x2][p]paletteuse" output.gif

Agora não tenho certeza se preciso adicionar outra variável à paletause? Estou tentando executar isso de uma só vez

O erro diz

ffmpeg version 2.8.11-0ubuntu0.16.04.1 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
  configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2016-01-21 04:12:34
  Duration: 00:04:24.38, start: 0.000000, bitrate: 730 kb/s
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p(tv, bt709), 640x360 [SAR 1:1 DAR 16:9], 632 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 95 kb/s (default)
    Metadata:
      creation_time   : 2016-01-21 04:12:35
      handler_name    : IsoMedia File Produced by Google, 5-11-2011
Cannot find a matching stream for unlabeled input pad 0 on filter Parsed_drawtext_2

Responder1

Aplique o drawtext na sequência dos primeiros filtros.

ffmpeg -y -ss 30 -t 3 -i "input.mp4"
  -filter_complex "fps=10,scale=320:-1:flags=lanczos,
   drawtext=box=1:[email protected]:boxborderw=5:fontfile=font3.ttf:text='Stackoverflow':fontsize=24:fontcolor=white:x=(w-tw)/2:y=(h/PHI)+th,
   split[x1][x2];[x1]palettegen[p];[x2][p]paletteuse" output.gif

Responder2

Por precaução, esta ótima ferramenta oferece as mesmas funcionalidades mais algumas extras e também possui uma GUI amigável:

https://github.com/lettier/gifcurry

A instalação é simples no Ubuntu:

wget https://github.com/lettier/gifcurry/releases/download/6.0.0.0/gifcurry-6.0.0.0-x86_64.AppImag

chmod u+x gifcurry-6.0.0.0-x86_64.AppImage

./gifcurry-6.0.0.0-x86_64.AppImage

Aproveitar.

informação relacionada