Как мне преобразовать прозрачный .mov-файл в файл mp4, наложенный на фоновое изображение, используя FFMPEG

3377
Ernie

Я пытаюсь конвертировать файл 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 
2
Нет, все нормально как есть. Спасибо за предоставление вывода. Я мог бы изучить это позже! slhck 11 лет назад 0

1 ответ на вопрос

3
mark4o

ffmpeg does not currently support ProRes alpha channels. (This is an open enhancement request.) If you can instead use the QuickTime Animation (RLE) codec (qtrle) for the overlay movie then that should work.

Похожие вопросы