b0r0j0 发表于 2015-9-16 12:29:54

如何做透明视频合成?

我有两个a.mp4,b.mp4 两个文件,用 ffmpeg -i a.mp4 -i b.mp4 -filter_complex overlay ab.mp4 可以叠加在一起。但是我想在上层的b.mp4加个透明度。

怎么做这个命令?

jamal 发表于 2015-10-8 16:21:06

请问楼主,最后这个出来的可用的命令是长什么样子的呢?:D

孙悟空 发表于 2015-9-16 13:41:15

http://bbs.chinaffmpeg.com/forum.php?mod=viewthread&tid=252#lastpost

可以参考这篇帖子

b0r0j0 发表于 2015-9-16 17:48:19

多谢,大神,可以了···

b0r0j0 发表于 2015-9-17 11:09:08

大神再帮我看一下,
windows ffmpeg 2.8上没有问题,但是我用ndk编译ffmpeg2.8一直没有成功,下载的别人编译的 ffmpeg 2.4
我再android下用ffmpeg 2.4 执行这个指令一直报错。

1|root@android:/storage/sdcard1 # ./ffmpeg -i /sdcard/01/a2.mp4 -i /sdcard/01/b.mp4 -i /sdcard/01/logo.png -vf "format=rgb24,setsar=sar=1/1;format=rgb24,setsar=sar=1/1;blend=all_mode='addition':all_opacity=1,format=rgb24; overlay=20:20:enable='between(t,1,2)'" -af "amovie=/sdcard/01/a.mp3;amix=inputs=2:duration=shortest:dropout_transition=2" -strict -2 /sdcard/01/a_new.mp4
duration=shortest:dropout_transition=2" -strict -2 /sdcard/01/a_new.mp4       <
ffmpeg version n2.4 Copyright (c) 2000-2014 the FFmpeg developers
built on Sep 19 2014 16:16:42 with gcc 4.8 (GCC)
configuration: --target-os=linux --cross-prefix=/home/sb/Source-Code/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi- --arch=arm --cpu=cortex-a8 --enable-runtime-cpudetect --sysroot=/home/sb/Source-Code/ffmpeg-android/toolchain-android/sysroot --enable-pic --enable-libx264 --enable-libass --enable-libfreetype --enable-libfribidi --enable-fontconfig --enable-pthreads --disable-debug --disable-ffserver --enable-version3 --enable-hardcoded-tables --disable-ffplay --disable-ffprobe --enable-gpl --enable-yasm --disable-doc --disable-shared --enable-static --pkg-config=/home/sb/Source-Code/ffmpeg-android/ffmpeg-pkg-config --prefix=/home/sb/Source-Code/ffmpeg-android/build/armeabi-v7a-neon --extra-cflags='-I/home/sb/Source-Code/ffmpeg-android/toolchain-android/include -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all -mfpu=neon' --extra-ldflags='-L/home/sb/Source-Code/ffmpeg-android/toolchain-android/lib -Wl,-z,relro -Wl,-z,now -pie' --extra-lib
-lpng -lexpat -lm' --extra-cxxflags=
libavutil      54.7.100 / 54.7.100
libavcodec   56.1.100 / 56.1.100
libavformat    56.4.101 / 56.4.101
libavdevice    56.0.100 / 56.0.100
libavfilter   5.1.100 /5.1.100
libswscale      3.0.100 /3.0.100
libswresample   1.1.100 /1.1.100
libpostproc    53.0.100 / 53.0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/sdcard/01/a2.mp4':
Metadata:
    major_brand   : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.0.100
Duration: 00:00:07.52, start: 0.100000, bitrate: 577 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 480x480 , 616 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 16000 Hz, mono, fltp, 21 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '/sdcard/01/b.mp4':
Metadata:
    major_brand   : M4V
    minor_version   : 1
    compatible_brands: M4V mp42isom
    creation_time   : 2014-01-27 05:13:09
Duration: 00:00:10.00, start: 0.000000, bitrate: 929 kb/s
    Stream #1:0(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv), 480x480 , 922 kb/s, 30 fps, 30 tbr, 30k tbn, 60 tbc (default)
    Metadata:
      creation_time   : 2014-01-27 05:13:09
      handler_name    : Mainconcept MP4 Video Media Handler
      encoder         : AVC Coding
Input #2, png_pipe, from '/sdcard/01/logo.png':
Duration: N/A, bitrate: N/A
    Stream #2:0: Video: png, rgba, 80x27 , 25 tbr, 25 tbn, 25 tbc
format=rgb24,setsar=sar=1/1;format=rgb24,setsar=sar=1/1;blend=all_mode='addition':all_opacity=1,format=rgb24; overlay=20:20:enable='between(t,1,2)'' does not have exactly one input and output.
Error opening filters!


孙悟空 发表于 2015-9-17 11:50:20

有可能是和移植有关系,没有在Android下面这么玩过……

b0r0j0 发表于 2015-9-26 10:29:02

大神,我想把一个遮罩类带透明区域的mov遮盖住底部的视频,这个指令 能用overlay实现吗?(不知道怎么把特定的区域变透明)

或者用其它的指令怎么实现

孙悟空 发表于 2015-9-26 19:48:17

filter里面有个chroma key的方法,可以搜搜

孙悟空 发表于 2015-9-26 20:02:34

Make every green pixel in the input image transparent:
ffmpeg -i input.png -vf chromakey=green out.png
Overlay a greenscreen-video on top of a static black background.
ffmpeg -f lavfi -i color=c=black:s=1280x720 -i video.mp4 -shortest -filter_complex "chromakey=0x70de77:0.1:0.2;overlay" -map "" output.mkv

孙悟空 发表于 2015-9-26 20:02:37

Make every green pixel in the input image transparent:
ffmpeg -i input.png -vf chromakey=green out.png
Overlay a greenscreen-video on top of a static black background.
ffmpeg -f lavfi -i color=c=black:s=1280x720 -i video.mp4 -shortest -filter_complex "chromakey=0x70de77:0.1:0.2;overlay" -map "" output.mkv
页: [1] 2
查看完整版本: 如何做透明视频合成?