Como faço para converter um arquivo .mov transparente em um arquivo mp4 sobreposto em uma imagem de fundo usando FFMPEG

2

Estou tentando converter um arquivo mov com as seguintes especificações:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mov':
Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    creation_time   : 2012-10-09 13:34:01
Duration: 00:00:51.60, start: 0.000000, bitrate: 217433 kb/s
    Stream #0:0(eng): Video: prores (ap4h / 0x68347061), yuv444p10le, 1920x1080, 215844 kb/s, SAR 1:1 DAR 16:9, 25 fps, 25 tbr, 25 tbn, 25 tbc
    Metadata:
        creation_time   : 2012-10-09 13:34:01
        handler_name    : Apple Alias Data Handler
        timecode        : 01:00:00:00
    Stream #0:1(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, stereo, s16, 1536 kb/s
    Metadata:
        creation_time   : 2012-10-09 13:34:01
        handler_name    : Apple Alias Data Handler
    Stream #0:2(eng): Data: none (tmcd / 0x64636D74)
    Metadata:
        creation_time   : 2012-10-09 13:42:30
        handler_name    : Apple Alias Data Handler
        timecode        : 01:00:00:00

Eu quero uma imagem de fundo com esse vídeo em cima e salvá-lo como um arquivo mp4. Enquanto isso, o vídeo precisa ser dimensionado e recortado Eu preciso de uma solução que pode ser automatizada e colocada em um servidor, é por isso que eu tentei ffmpeg

Isso é o que você tem no momento:

ffmpeg -loop 1 -f image2 -i background.png -r 25 -an -vcodec libx264 -b:v 1500k -vf "movie=test.mov[movie];[movie]scale=max(552\, 420*iw/ih):-1[OUT1]; [OUT1]crop=552:420[OUT2]; [0][OUT2] overlay=0:0 [out]" -s 552x420 -y output.mp4

O problema é que, de alguma forma, a transparência é perdida e o fundo é preto, em vez da imagem subjacente. Quando eu tento o mesmo comando ffmpeg com um FLV transparente como entrada, ele funciona, mas eu gostaria que ele funcionasse sem ter que converter todos os arquivos de origem para outro formato

Qualquer ajuda com isso seria muito apreciada!

Esta é a minha configuração atual do ffmpeg:

ffmpeg version 1.1.2 Copyright (c) 2000-2013 the FFmpeg developers
built on Mar  4 2013 11:19:29 with Apple clang version 4.1 (tags/Apple/clang-421.11.66) (based on LLVM 3.1svn)
configuration: --prefix=/opt/local --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libopus --enable-libtheora --enable-libschroedinger --enable-libopenjpeg --enable-libmodplug --enable-libvpx --enable-libspeex --enable-libfreetype --mandir=/opt/local/share/man --enable-shared --enable-pthreads --cc=/usr/bin/clang --arch=x86_64 --enable-yasm --enable-gpl --enable-postproc --enable-libx264 --enable-libxvid --enable-nonfree --enable-libfaac
    libavutil      52. 13.100 / 52. 13.100
    libavcodec     54. 86.100 / 54. 86.100
    libavformat    54. 59.106 / 54. 59.106
    libavdevice    54.  3.102 / 54.  3.102
    libavfilter     3. 32.100 /  3. 32.100
    libswscale      2.  1.103 /  2.  1.103
    libswresample   0. 17.102 /  0. 17.102
    libpostproc    52.  2.100 / 52.  2.100

EDITAR

Esta é a saída completa do console para o comando:

ffmpeg -loop 1 -f image2 -i background.jpg -r 25 -an -vframes 2500  -vcodec libx264 -b:v 1500k -vf "movie=test.mov[movie];[movie]scale=max(552\, 420*iw/ih):-1[OUT1]; [OUT1]crop=552:420[OUT2]; [0][OUT2] overlay=0:0 [out]" -s 552x420 -y output.mp4
ffmpeg version 1.1.2 Copyright (c) 2000-2013 the FFmpeg developers
  built on Mar  4 2013 11:19:29 with Apple clang version 4.1 (tags/Apple/clang-421.11.66) (based on LLVM 3.1svn)
  configuration: --prefix=/opt/local --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libopus --enable-libtheora --enable-libschroedinger --enable-libopenjpeg --enable-libmodplug --enable-libvpx --enable-libspeex --enable-libfreetype --mandir=/opt/local/share/man --enable-shared --enable-pthreads --cc=/usr/bin/clang --arch=x86_64 --enable-yasm --enable-gpl --enable-postproc --enable-libx264 --enable-libxvid --enable-nonfree --enable-libfaac
  libavutil      52. 13.100 / 52. 13.100
  libavcodec     54. 86.100 / 54. 86.100
  libavformat    54. 59.106 / 54. 59.106
  libavdevice    54.  3.102 / 54.  3.102
  libavfilter     3. 32.100 /  3. 32.100
  libswscale      2.  1.103 /  2.  1.103
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
Input #0, image2, from 'background.jpg':
  Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: mjpeg, yuvj444p, 1024x576, 25 fps, 25 tbr, 25 tbn, 25 tbc
[libx264 @ 0x7fddc3813600] using cpu capabilities: none!
[libx264 @ 0x7fddc3813600] profile High, level 3.0
[libx264 @ 0x7fddc3813600] 264 - core 128 - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=1500 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'output.mp4':
  Metadata:
    encoder         : Lavf54.59.106
    Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 552x420, q=-1--1, 1500 kb/s, 12800 tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg -> libx264)
Press [q] to stop, [?] for help
frame= 2500 fps= 53 q=32766.0 Lsize=    9772kB time=00:01:39.92 bitrate= 801.2kbits/s    
video:9742kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.309877%
[libx264 @ 0x7fddc3813600] frame I:10    Avg QP: 1.97  size: 58522
[libx264 @ 0x7fddc3813600] frame P:634   Avg QP: 4.19  size:  7889
[libx264 @ 0x7fddc3813600] frame B:1856  Avg QP: 7.63  size:  2364
[libx264 @ 0x7fddc3813600] consecutive B-frames:  1.0%  0.0%  0.1% 98.9%
[libx264 @ 0x7fddc3813600] mb I  I16..4: 47.6% 16.4% 36.0%
[libx264 @ 0x7fddc3813600] mb P  I16..4:  0.1%  0.1%  0.3%  P16..4:  2.9%  2.9%  2.6%  0.0%  0.0%    skip:91.1%
[libx264 @ 0x7fddc3813600] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  2.3%  1.1%  1.1%  direct: 3.0%  skip:92.4%  L0:23.8% L1:24.1% BI:52.0%
[libx264 @ 0x7fddc3813600] final ratefactor: -0.23
[libx264 @ 0x7fddc3813600] 8x8 transform intra:16.7% inter:26.0%
[libx264 @ 0x7fddc3813600] coded y,uvDC,uvAC intra: 65.5% 84.3% 83.9% inter: 5.8% 4.8% 3.8%
[libx264 @ 0x7fddc3813600] i16 v,h,dc,p: 60% 21%  8% 12%
[libx264 @ 0x7fddc3813600] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 26% 31%  9%  3%  5%  8%  6%  6%  5%
[libx264 @ 0x7fddc3813600] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 22% 27% 11%  4%  7%  9%  7%  6%  6%
[libx264 @ 0x7fddc3813600] i8c dc,h,v,p: 34% 43% 17%  7%
[libx264 @ 0x7fddc3813600] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x7fddc3813600] ref P L0: 61.2% 19.9% 10.0%  8.8%
[libx264 @ 0x7fddc3813600] ref B L0: 91.0%  7.3%  1.7%
[libx264 @ 0x7fddc3813600] ref B L1: 98.7%  1.3%
[libx264 @ 0x7fddc3813600] kb/s:798.01
    
por Ernie 05.03.2013 / 12:43

1 resposta

3

ffmpeg atualmente não suporta canais alfa ProRes. (Esta é uma solicitação de melhoria aberta .) Se você puder usar o codec QuickTime Animation (RLE) ( qtrle ) para o filme de sobreposição, então isso deve funcionar.

    
por 09.03.2013 / 19:20