ProRes transcodage dans ffmpeg trop lent

1

Nous essayons de transcoder des films / clips dans ProRes LT en utilisant les options suivantes:

ffmpeg -threads "16" -i "$2" -flags +ildct -vcodec prores -profile 1 -qscale 4 \
-threads "16" -r 24 -vf "yadif=0:-1:-1, scale=1920:1080" -aspect 16:9 \
-acodec pcm_s32le

Le fait est que nous avons un serveur de transcodage qui ne fait que des transcodages et qui a 16 threads - un seul est utilisé. FFmpeg commence avec 14 images par seconde, puis chute avec une vitesse de transcodage d'environ 8 images par seconde:

frame=    9 fps=0.0 q=0.0 size=    2647kB time=00:00:00.30 bitrate=72271.8kbits/s dup=1 drop=0    
frame=   15 fps= 14 q=0.0 size=    5623kB time=00:00:00.50 bitrate=92120.9kbits/s dup=1 drop=0    
frame=   20 fps= 13 q=0.0 size=    8268kB time=00:00:00.66 bitrate=101600.1kbits/s dup=1 drop=0    
frame=   25 fps= 12 q=0.0 size=   10964kB time=00:00:00.83 bitrate=107785.2kbits/s dup=1 drop=0    
frame=   30 fps= 11 q=0.0 size=   13678kB time=00:00:01.00 bitrate=112052.5kbits/s dup=1 drop=0    
frame=   35 fps= 10 q=0.0 size=   16407kB time=00:00:01.16 bitrate=115204.0kbits/s dup=1 drop=0    
frame=   40 fps= 10 q=0.0 size=   19131kB time=00:00:01.33 bitrate=117539.2kbits/s dup=1 drop=0    
frame=   45 fps=9.8 q=0.0 size=   21842kB time=00:00:01.50 bitrate=119286.8kbits/s dup=1 drop=0    
frame=   50 fps=9.6 q=0.0 size=   24572kB time=00:00:01.66 bitrate=120776.7kbits/s dup=1 drop=0    
frame=   54 fps=9.4 q=0.0 size=   26755kB time=00:00:01.80 bitrate=121767.1kbits/s dup=1 drop=0    
frame=   58 fps=9.3 q=0.0 size=   28946kB time=00:00:01.93 bitrate=122653.0kbits/s dup=1 drop=0    
frame=   62 fps=9.2 q=0.0 size=   31150kB time=00:00:02.06 bitrate=123474.0kbits/s dup=1 drop=0    
frame=   66 fps=9.1 q=0.0 size=   33352kB time=00:00:02.20 bitrate=124189.0kbits/s dup=1 drop=0    
frame=   70 fps=9.0 q=0.0 size=   35569kB time=00:00:02.33 bitrate=124877.8kbits/s dup=1 drop=0    
frame=   74 fps=8.9 q=0.0 size=   37787kB time=00:00:02.46 bitrate=125494.2kbits/s dup=1 drop=0    
frame=   78 fps=8.8 q=0.0 size=   40010kB time=00:00:02.60 bitrate=126062.6kbits/s dup=1 drop=0    
frame=   82 fps=8.7 q=0.0 size=   42229kB time=00:00:02.73 bitrate=126563.9kbits/s dup=1 drop=0    
frame=   86 fps=8.6 q=0.0 size=   44434kB time=00:00:02.86 bitrate=126979.3kbits/s dup=1 drop=0    
frame=   90 fps=8.6 q=0.0 size=   46641kB time=00:00:03.00 bitrate=127361.4kbits/s dup=1 drop=0    
frame=   94 fps=8.5 q=0.0 size=   48846kB time=00:00:03.13 bitrate=127706.8kbits/s dup=1 drop=0    
frame=   98 fps=8.5 q=0.0 size=   51046kB time=00:00:03.26 bitrate=128010.0kbits/s dup=1 drop=0    
frame=  101 fps=8.3 q=0.0 size=   52701kB time=00:00:03.36 bitrate=128235.3kbits/s dup=1 drop=0    
...

Nous avons effectué une recherche avec Google mais nous n'avons trouvé aucune solution efficace à ce problème. Est-ce que quelqu'un d'entre vous a déjà rencontré le même problème? Et si vous le faisiez, comment l'avez-vous résolu à la fin?

@LordNeckbeard Voici la première et les 50 dernières lignes de transcodage:

ffmpeg version 0.10.2.git Copyright (c) 2000-2012 les développeurs de FFmpeg
  créé le 16 janvier 2013 à 15:47:31 avec gcc 4.1.2 20080704 (Red Hat 4.1.2-51)
  configuration: --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvpx --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable- libx264 --enable-libxvid --disable-ffplay --enable-shared --enable-gpl --enable-postproc --enable-nonfree --enable-avfilter --enable-pthreads --extra-cflags = -fPIC - -enable-libfreetype
  libavutil 51. 55.100 / 51. 55.100
  libavcodec 54. 23.100 / 54. 23.100
  libavformat 54. 6.101 / 54. 6.101
  libavdevice 54. 0.100 / 54. 0.100
  libavfilter 2. 77.100 / 2. 77.100
  libswscale 2. 1.100 / 2. 1.100
  libswresample 0. 15.100 / 0. 15.100
  libpostproc 52. 0.100 / 52. 0.100
[h264 @ 0x1a574240] Augmentation du tampon de réorganisation à 1
Entrée n ° 0, mov, mp4, m4a, 3gp, 3g2, mj2, à partir de '/content/flowcenter/highres/dokfest/ftp_upload_20131108_2/Cacheu2.mov':
  Métadonnées:
    major_brand: qt  
    version_mineure: 537199360
    compatibles_brands: qt  
    creation_time: 2012-10-17 05:46:57
LOGGER: définir les cadres sur 14950
  Durée: 00: 09: 58,00, début: 0,000000, débit: 24157 kb / s
    Flux # 0: 0 (eng): Vidéo: h264 (Principal) (avc1 / 0x31637661), yuv420p, 1920x1080, 23863 kb / s, 25 images par seconde, 25 tbr, 2500 tbn, 5k tbc
    Métadonnées:
      creation_time: 2012-10-17 08:24:55
      handler_name: Apple Video Media Handler
    Flux n ° 0: 1 (eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stéréo, s16, 289 kb / s
    Métadonnées:
      creation_time: 2012-10-17 08:25:00
      handler_name: Apple Sound Media Handler
    Flux # 0: 2 (eng): Données: aucune (tmcd / 0x64636D74)
    Métadonnées:
      creation_time: 2012-10-17 08:27:50
      handler_name: gestionnaire de média de code temporel
      code temporel: 01: 00: 00: 00
Veuillez utiliser -profile: a ou -profile: v, -profile est ambigu
Veuillez utiliser -q: a ou -q: v, -qscale est ambigu
[yadif @ 0x1a5a6e40] mode: 0 parité: -1 auto_enable: -1
[tampon @ 0x1a5afb00] w: 1920 h: 1080 pixels: yuv420p tb: 1/2500 sar: 0/1 sws_param: flags = 2
[buffersink @ 0x1a5afa80] Aucun champ opaque fourni
[scale @ 0x1a5afc60] w: 1920 h: 1080 après: yuv420p sar: 0/1 -> w: 1920 h: 1080 fmt: yuv422p10le sar: 0/1 drapeaux: 0x4
[aformat @ 0x1a665fa0] filtre d'insertion automatique 'ré-échantillonneur auto-inséré 0' entre le filtre 'Parsed_anull_0' et le filtre 'aformat'
[aresample @ 0x1a5daf00] chl: fmt stéréo: s16 r: 48000Hz -> chl: fmt stéréo: s32 r: 48000Hz
Sortie n ° 0, mov, vers '/content/flowcenter/other/Cacheu2_2_1.mov.mov':
  Métadonnées:
    major_brand: qt  
    version_mineure: 537199360
    compatibles_brands: qt  
    creation_time: 2012-10-17 05:46:57
    encodeur: Lavf54.6.101
    Flux # 0: 0 (eng): Vidéo: prores (apcs) (apcs / 0x73637061), yuv422p10le, 1920x1080 [SAR 1: 1 DAR 16: 9], q = 2-31, 200 kb / s, 25 tbn, 25 à confirmer
    Métadonnées:
      creation_time: 2012-10-17 08:24:55
      handler_name: Apple Video Media Handler
    Flux # 0: 1 (eng): Audio: pcm_s32le (in32 / 0x32336E69), 48000 Hz, stéréo, s32, 3072 kb / s
    Métadonnées:
      creation_time: 2012-10-17 08:25:00
      handler_name: Apple Sound Media Handler
Cartographie de flux:
  Flux # 0: 0 -> # 0: 0 (h264 -> prores)
  Flux # 0: 1 -> # 0: 1 (aac -> pcm_s32le)
vidéo: 7615955 ko audio: 224272 ko En-têtes globaux: 0 ko en multiplexage 0.004298%
En cours d'exécution:
"/home/mfc/ffmpeg/one_for_all.mov.sh" 1281038 "/content/flowcenter/highres/dokfest/ftp_upload_20131108_2/Cacheu2.mov" "/content/flowcenter/other/Cacheu2_2_2_mov.mov"
1c
ffmpeg -threads 16 -i /content/flowcenter/highres/dokfest/ftp_upload_20131108_2/Cacheu2.mov -flags + ildct -vcodec prores -profile 1 -qscale 4 -threads 16 -vf yadif = 0: -1, -1. 1920: 1080 -aspect 16: 9 -acodec pcm_s32le /content/flowcenter/other/Cacheu2_2_1.mov.mov
nécessaire 1679 secondes

Quoi qu'il en soit, je pense qu'il serait trop long d'afficher le tout. J'ai enregistré un léger changement, lorsque je l'ai transcodé à nouveau, car je ne pouvais pas trouver le fichier journal du clip d'hier.

@ Rajib désolé que ce soit ma faute en utilisant -threads deux fois, je pensais que j'avais peut-être placé la commande threads à un autre endroit du script afin qu'elle l'utilise réellement, mais cela n'a pas fonctionné et je l'ai encore supprimée. En ce qui concerne la commande -i "$ 2", notre logiciel fonctionne avec un mélange de commandes ffmpeg et de variables. Pour autant que je sache, $ 2 est un autre moyen de décrire le chemin d'accès à notre fichier d'entrée, de sorte que nous n'avons plus à utiliser xyz.mov. . Et oui, nous voulons une qualité 1080p même si cela signifie que nous devons améliorer le clip.

Sébastien
la source
1
Veuillez afficher la sortie complète de la console ffmpeg (ou au moins les premières et dernières ~ 50 lignes).
llogan
Par curiosité, pourquoi avez-vous besoin de faire -threads "16"deux fois? Est-ce que $ 2 est une séquence d’images ou un fichier mov? Êtes-vous en train de passer à une taille supérieure à 1920x1080?
Rajib
LordNeckbeard a demandé les 50 premières lignes de sortie de la commande ffmpeg, et non du processus de transcodage,
ptQa 12/12
Une sortie complète de la console, les 50 premières et les 50 dernières lignes, ou une sortie complète avec plusieurs lignes répétées coupées sont toutes acceptables.
llogan
Vous pouvez commencer avec une commande minimale et inclure progressivement des options pour voir si vous trouvez un goulot d'étranglement dans le processus:time ffmpeg -y -i input -c:v prores -t 60 -an -f null -
llogan