我正在尝试为所选视频添加老式效果。为此,我使用了老式效果gif文件,并使用以下方法成功将其作为叠加层添加到了视频中。
ffmpeg.execute(new String[]{"-i",uri,"-ignore_loop", "1","-i",overlayUri ,"-filter_complex","[0:v]scale="+width+":"+height+"[v1];[1:v]scale="+width+":"+height+"[v2];[v1][v2]overlay",outputPath}, new ExecuteBinaryResponseHandler() {
@Override
public void onStart() {
Log.d("success", "process complete");
}
@Override
public void onProgress(String message) {
Log.d("progress", message);
}
@Override
public void onFailure(String message) {
Log.d("failure", message);
}
@Override
public void onSuccess(String message) {
Log.d("success", "process complete");
}
@Override
public void onFinish() {
}
});
break;
但是现在由于叠加层不是透明的,所以我看不到叠加层图像后面的视频。那么该怎么做。
答案 0 :(得分:0)
您可以尝试以下命令:
% ffmpeg -v warning -ss 45 -t 2 -i big_buck_bunny_1080p_h264.mov -vf scale=300:-1 -gifflags -transdiff -y bbb-notrans.gif
% ffmpeg -v warning -ss 45 -t 2 -i big_buck_bunny_1080p_h264.mov -vf scale=300:-1 -gifflags +transdiff -y bbb-trans.gif
% ls -l bbb-*.gif
-rw-r--r-- 1 ux ux 1.1M Mar 15 22:50 bbb-notrans.gif
-rw-r--r-- 1 ux ux 369K Mar 15 22:50 bbb-trans.gif
参考链接:
http://blog.pkh.me/p/21-high-quality-gif-with-ffmpeg.html
我希望这会有所帮助。
答案 1 :(得分:0)
浪费了很多时间后,我意识到gif一旦创建就无法编辑。因此,我选择在一个视频的顶部叠加另一个视频,并为叠加的视频添加透明度。 我还必须调整覆盖视频的大小,以匹配当前视频的尺寸。 我使用以下命令实现了
String[] cmd = new String[]{"-i", uri,
"-i",overlayUri,"-filter_complex","[1:v][0:v]scale2ref[ua][b];[ua]setsar=1,format=yuva444p,colorchannelmixer=aa=0.5[u];[b][u]overlay", outputPath};
此处 uri 是我的原始视频, overlayUri 是将作为重叠显示的视频,而 outPutPath 是文件存储的路径。
尽管我不知道上面的命令实际上是如何工作的,但是经过大量的搜索并组合了几个不同的命令之后,我还是可以使用上面的命令。