2

Я пытаюсь конвертировать файл MOV со следующими характеристиками:

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

Я хочу фоновое изображение с этим видео и сохранить его в виде файла mp4. Тем временем видео должно быть масштабировано и обрезано. Мне нужно решение, которое можно автоматизировать и разместить на сервере, поэтому я попробовал ffmpeg.

Это в настоящее время есть:

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

Проблема, так или иначе, в том, что прозрачность теряется, а фон черный вместо основного изображения. Когда я пробую ту же команду ffmpeg с прозрачным FLV в качестве входных данных, она работает, но я бы хотел, чтобы она работала без необходимости сначала преобразовывать все исходные файлы в другой формат

Любая помощь с этим будет принята с благодарностью!

Это моя текущая конфигурация 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

РЕДАКТИРОВАТЬ

Это полный вывод консоли для команды:

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

1 ответ1

3

ffmpeg настоящее время не поддерживает альфа-каналы ProRes. (Это открытый запрос на улучшение.) Если вместо этого вы можете использовать кодек QuickTime Animation (RLE) (qtrle) для оверлейного фильма, то это должно сработать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .