web-dev-qa-db-fra.com

FFmpeg, erreur de codage en dur des sous-titres

J'essaie d'utiliser ffmpeg pour coder en dur les sous-titres, mais cela donne cette erreur:

No such filter: 'subtitles'
Error opening filters!

Ma commande ffmpeg et la sortie complète de la console:

$ ffmpeg -i 24.903.hdtv-lol.mp4 -vf subtitles=24.903.hdtv-lol_ar.srt out.avi

ffmpeg version 1.2.6-7:1.2.6-1~trusty1 Copyright (c) 2000-2014 the FFmpeg developers
  built on Aug  5 2014 18:47:03 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
  configuration: --Arch=AMD64 --disable-stripping --enable-avresample --enable-pthreads --enable-runtime-cpudetect --extra-version='7:1.2.6-1~trusty1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-libcdio --enable-x11grab --enable-libx264 --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
  avcodec     configuration: --Arch=AMD64 --disable-stripping --enable-avresample --enable-pthreads --enable-runtime-cpudetect --extra-version='7:1.2.6-1~trusty1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-libcdio --enable-x11grab --enable-libx264 --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-aacenc --enable-libvo-amrwbenc
  libavutil      52. 18.100 / 52. 18.100
  libavcodec     54. 92.100 / 54. 92.100
  libavformat    54. 63.104 / 54. 63.104
  libavdevice    53.  5.103 / 53.  5.103
  libavfilter     3. 42.103 /  3. 42.103
  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 '24.903.hdtv-lol.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 1
    compatible_brands: isomavc1
    creation_time   : 2014-05-13 02:11:18
  Duration: 00:41:48.80, start: 0.000000, bitrate: 977 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 720x404 [SAR 1:1 DAR 180:101], 850 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc
    Metadata:
      creation_time   : 2014-05-13 02:11:18
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 123 kb/s
    Metadata:
      creation_time   : 2014-05-13 02:11:21
      handler_name    : GPAC ISO Audio Handler
File 'out.avi' already exists. Overwrite ? [y/N] y
No such filter: 'subtitles'
Error opening filters!

J'essaie de suivre ce tutoriel

2
Lynob

Le problème

Le filtre de sous-titres nécessite libass en tant que dépendance , mais votre construction manque --enable-libass.

Solution

Vous devrez compiler ffmpeg avec le support de libass, ou télécharger une version depuis la page Téléchargement FFmpeg (dans la section "Constructions statiques Linux").

1
llogan

Ma première hypothèse à ce sujet: c’est parce que votre fichier d’entrée n’est pas une vidéo mais bien le fichier de sous-titres.

ffmpeg -i 24.903.hdtv-lol_ar.srt -vf subtitles=24.903.hdtv-lol_ar.srt out.avi

Utilisez le fichier AVI comme entrée à la place

0
syss