Transcrição de ProRes no ffmpeg muito lenta

1

Estamos tentando transcodificar filmes / clipes no ProRes LT usando as seguintes opções:

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

O problema é que temos um servidor de transcodificação que só faz transcodificações e tem 16 segmentos - apenas um é usado. O FFmpeg começa com 14 fps e depois desce com uma taxa de transcodificação de cerca de 8 fps:

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    
...

Nós pesquisamos com o google, mas não encontramos nenhuma solução funcional para esse problema. Algum de vocês já experimentou o mesmo problema? E se você fez, como você resolveu no final?

@LordNeckbeard Aqui estão as primeiras e as últimas 50 linhas de transcodificação:

ffmpeg version 0.10.2.git Copyright (c) 2000-2012 the FFmpeg developers
  built on Jan 16 2013 15:47:31 with 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] Increasing reorder buffer to 1
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/content/flowcenter/highres/dokfest/ftp_upload_20131108_2/Cacheu2.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    creation_time   : 2012-10-17 05:46:57
LOGGER: set frames to 14950
  Duration: 00:09:58.00, start: 0.000000, bitrate: 24157 kb/s
    Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1920x1080, 23863 kb/s, 25 fps, 25 tbr, 2500 tbn, 5k tbc
    Metadata:
      creation_time   : 2012-10-17 08:24:55
      handler_name    : Apple Video Media Handler
    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, s16, 289 kb/s
    Metadata:
      creation_time   : 2012-10-17 08:25:00
      handler_name    : Apple Sound Media Handler
    Stream #0:2(eng): Data: none (tmcd / 0x64636D74)
    Metadata:
      creation_time   : 2012-10-17 08:27:50
      handler_name    : Time Code Media Handler
      timecode        : 01:00:00:00
Please use -profile:a or -profile:v, -profile is ambiguous
Please use -q:a or -q:v, -qscale is ambiguous
[yadif @ 0x1a5a6e40] mode:0 parity:-1 auto_enable:-1
[buffer @ 0x1a5afb00] w:1920 h:1080 pixfmt:yuv420p tb:1/2500 sar:0/1 sws_param:flags=2
[buffersink @ 0x1a5afa80] No opaque field provided
[scale @ 0x1a5afc60] w:1920 h:1080 fmt:yuv420p sar:0/1 -> w:1920 h:1080 fmt:yuv422p10le sar:0/1 flags:0x4
[aformat @ 0x1a665fa0] auto-inserting filter 'auto-inserted resampler 0' between the filter 'Parsed_anull_0' and the filter 'aformat'
[aresample @ 0x1a5daf00] chl:stereo fmt:s16 r:48000Hz -> chl:stereo fmt:s32 r:48000Hz
Output #0, mov, to '/content/flowcenter/other/Cacheu2_2_1.mov.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    creation_time   : 2012-10-17 05:46:57
    encoder         : Lavf54.6.101
    Stream #0:0(eng): Video: prores (apcs) (apcs / 0x73637061), yuv422p10le, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 25 tbn, 25 tbc
    Metadata:
      creation_time   : 2012-10-17 08:24:55
      handler_name    : Apple Video Media Handler
    Stream #0:1(eng): Audio: pcm_s32le (in32 / 0x32336E69), 48000 Hz, stereo, s32, 3072 kb/s
    Metadata:
      creation_time   : 2012-10-17 08:25:00
      handler_name    : Apple Sound Media Handler
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> prores)
  Stream #0:1 -> #0:1 (aac -> pcm_s32le)
video:7615955kB audio:224272kB global headers:0kB muxing overhead 0.004298%
Executing:
"/home/mfc/ffmpeg/one_for_all.mov.sh" 1281038 "/content/flowcenter/highres/dokfest/ftp_upload_20131108_2/Cacheu2.mov" "/content/flowcenter/other/Cacheu2_2_1.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, scale=1920:1080 -aspect 16:9 -acodec pcm_s32le /content/flowcenter/other/Cacheu2_2_1.mov.mov
needed 1679 seconds

De qualquer forma, acho que seria muito longo postar a coisa toda. Eu registrei uma pequena alteração, quando o transcodifiquei novamente, porque não consegui encontrar o arquivo de log do clipe de ontem.

@Rajib desculpa que foi minha culpa em usar -threads duas vezes, eu pensei que talvez eu tivesse colocado o comando threads em outro lugar no script para que ele realmente usasse o comando, mas não funcionou, então eu deletei isso de novo. Quanto ao comando -i "$ 2", nosso software funciona com uma mistura de comandos e variáveis ffmpeg e, até onde eu entendi, $ 2 é outra maneira de descrever o caminho para nosso arquivo de entrada, para que não tenhamos mais que usar xyz.mov . E sim, queremos uma qualidade de 1080p, mesmo isso significa que temos que melhorar o clipe.

    
por sebastian 11.12.2013 / 16:39

0 respostas