Wie konvertiere ich eine transparente .mov-Datei in eine mp4-Datei, die mit FFMPEG auf einem Hintergrundbild überlagert wird?

3494
Ernie

Ich versuche, eine mov-Datei mit den folgenden Spezifikationen zu konvertieren:

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 

Ich möchte ein Hintergrundbild mit diesem Video darüber und speichere es als mp4-Datei. In der Zwischenzeit muss das Video skaliert und zugeschnitten werden. Ich brauche eine Lösung, die automatisiert und auf einem Server platziert werden kann. Deshalb habe ich es mit ffmpeg versucht

Das ist im Moment zu haben:

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

Das Problem ist irgendwie, dass die Transparenz verloren geht und der Hintergrund schwarz ist, anstelle des zugrunde liegenden Bildes. Wenn ich den gleichen ffmpeg-Befehl mit einem transparenten FLV-Befehl als Eingabe versuche, funktioniert es, aber ich möchte, dass es funktioniert, ohne dass alle Quelldateien zuerst in ein anderes Format konvertiert werden müssen

Jede Hilfe wäre sehr dankbar!

Dies ist meine aktuelle Konfiguration von 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 

BEARBEITEN

Dies ist die vollständige Konsolenausgabe für den Befehl:

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
Nein, es ist gut so wie es ist. Vielen Dank für die Bereitstellung der Ausgabe. Ich könnte mir das später ansehen. slhck vor 11 Jahren 0

1 Antwort auf die Frage

3
mark4o

ffmpegunterstützt derzeit keine ProRes-Alphakanäle. (Dies ist eine offene Verbesserungsanforderung .) Wenn Sie stattdessen den QuickTime-Animationscodec (RLE qtrle) für den Overlay-Film verwenden können, sollte dies funktionieren.