ChinaFFmpeg

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 25621|回复: 15

[Android] 如何做透明视频合成?

[复制链接]
发表于 2015-9-16 12:29:54 | 显示全部楼层 |阅读模式
我有两个a.mp4,b.mp4 两个文件,用 ffmpeg -i a.mp4 -i b.mp4 -filter_complex overlay ab.mp4 可以叠加在一起。但是我想在上层的b.mp4加个透明度。

怎么做这个命令?
回复

使用道具 举报

发表于 2015-10-8 16:21:06 | 显示全部楼层
请问楼主,最后这个出来的可用的命令是长什么样子的呢?
回复 支持 0 反对 1

使用道具 举报

发表于 2015-9-16 13:41:15 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-16 17:48:19 | 显示全部楼层
多谢,大神,可以了···

回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-17 11:09:08 | 显示全部楼层
大神再帮我看一下,
windows ffmpeg 2.8上没有问题,但是我用ndk编译ffmpeg2.8一直没有成功,下载的别人编译的 ffmpeg 2.4
我再android  下用ffmpeg 2.4 执行这个指令一直报错。

[AppleScript] 纯文本查看 复制代码
1|root@android:/storage/sdcard1 # ./ffmpeg -i /sdcard/01/a2.mp4 -i /sdcard/01/b.mp4 -i /sdcard/01/logo.png -vf "[0:v]format=rgb24,setsar=sar=1/1[mv];[1:v]format=rgb24,setsar=sar=1/1[in];[in][mv]blend=all_mode='addition':all_opacity=1,format=rgb24[tmp]; [tmp][2:v]overlay=20:20:enable='between(t,1,2)'[out]" -af "amovie=/sdcard/01/a.mp3[audio];[in][audio]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 [SAR 9:16 DAR 9:16], 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 [SAR 1:1 DAR 1:1], 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 [SAR 2835:2835 DAR 80:27], 25 tbr, 25 tbn, 25 tbc
Simple filtergraph '[0:v]format=rgb24,setsar=sar=1/1[mv];[1:v]format=rgb24,setsar=sar=1/1[in];[in][mv]blend=all_mode='addition':all_opacity=1,format=rgb24[tmp]; [tmp][2:v]overlay=20:20:enable='between(t,1,2)'[out]' does not have exactly one input and output.
Error opening filters!
1|root@android:/storage/sdcard1 #

回复 支持 反对

使用道具 举报

发表于 2015-9-17 11:50:20 | 显示全部楼层
有可能是和移植有关系,没有在Android下面这么玩过……
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-26 10:29:02 | 显示全部楼层
大神,我想把一个遮罩类带透明区域的mov遮盖住底部的视频,这个指令 能用overlay实现吗?(不知道怎么把特定的区域变透明)

或者用其它的指令怎么实现
回复 支持 反对

使用道具 举报

发表于 2015-9-26 19:48:17 | 显示全部楼层
filter里面有个chroma key的方法,可以搜搜
回复 支持 反对

使用道具 举报

发表于 2015-9-26 20:02:34 | 显示全部楼层
[AppleScript] 纯文本查看 复制代码
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 "[1:v]chromakey=0x70de77:0.1:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" output.mkv
回复 支持 反对

使用道具 举报

发表于 2015-9-26 20:02:37 | 显示全部楼层
[AppleScript] 纯文本查看 复制代码
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 "[1:v]chromakey=0x70de77:0.1:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" output.mkv
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|Archiver|ChinaFFmpeg

GMT+8, 2025-5-18 19:20 , Processed in 0.072138 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表