[英]How to Add Watermark like tic tok using ffmpeg in android studio
I am trying To add Watermark Like Tic Tok using FFMPEG but it's Not working我正在尝试使用 FFMPEG 添加 Watermark Like Tic Tok 但它不起作用
GeneralUtils.checkForPermissionsMAndAbove(MainActivity.this, true);
LoadJNI vk = new LoadJNI();
try {
//String complexCommand = "ffmpeg -y -i /storage/emulated/0/in.mp4 -strict experimental -vf transpose=1 -s 160x120 -r 30 -aspect 4:3 -ab 48000 -ac 2 -ar 22050 -b 2097k /storage/emulated/0/out.mp4";
/*String complexCommand = "ffmpeg -i /storage/emulated/0/in.mp4 -framerate 30000/1001 -loop 1 -i /storage/emulated/0/abcd.jpg -filter_complex\n" +
" \"[1:v] fade=out:st=30:d=1:alpha=1 [ov]; [0:v][ov] overlay=10:10 [v]\" -map \"[v]\"\n" +
" -map 0:a -c:v libx264 -c:a copy -shortest /storage/emulated/0/out.mp4";*/
//String complexCommand = "ffmpeg -y -i /storage/emulated/0/in.mp4 -strict experimental -vf movie=/storage/emulated/0/abcd.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:10 [out] -s 320x240 -r 30 -b 15496k -vcodec mpeg4 -ab 48000 -ac 2 -ar 22050 /storage/emulated/0/out.mp4";
String complexCommand = "ffmpeg -i /storage/emulated/0/in.mp4 -i /storage/emulated/0/abcd.jpg -filter_complex \\\n" +
"\"overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2\" \\\n" +
"-codec:a copy /storage/emulated/0/out.mp4";
String workFolder = getApplicationContext().getFilesDir().getAbsolutePath();
//String[] complexCommand = {"ffmpeg","-i", "/sdcard/videokit/in.mp4"};
vk.run(GeneralUtils.utilConvertToComplex(complexCommand) , workFolder , getApplicationContext());
Log.i("test", "ffmpeg4android finished successfully");
} catch (Throwable e) {
Log.e("test", "vk run exception.", e);
}
but noting work for me但注意到为我工作
as you can i have no knowledge about FFMPEG so if you give answere please write in brief.如您所知,我对FFMPEG一无所知,所以如果您给出答案,请简要写下。
thank you.谢谢你。
Its nothing to do with android but below are simple ffmpeg commands它与 android 无关,但下面是简单的 ffmpeg 命令
Top-Left To Bottom-Right loop:从左上到右下的循环:
ffmpeg -i video.mp4 -i watermark.png -filter_complex \
"[0:v][1:v]overlay=x='if(lt(mod(t,10),5),10,W-w-10)':y='if(lt(mod(t,10),5),10,H-h-10)'" \
-codec:a copy out.mp4
Top-Right To Bottom-Left loop:从右上到左下的循环:
ffmpeg -i video.mp4 -i watermark.png -filter_complex \
"[0:v][1:v]overlay=x='if(lt(mod(t,10),5),W-w-10,10)':y='if(lt(mod(t,10),5),10,H-h-10)'" \
-codec:a copy out.mp4
Idea is very simple想法很简单
START HERE https://drive.google.com/file/d/0B2aT0QoEmtuaN0VJZ2Z4ODY3T2s/view File => New => import module => go find the folder downloaded at step1:从这里开始https://drive.google.com/file/d/0B2aT0QoEmtuaN0VJZ2Z4ODY3T2s/查看文件 => 新建 => 导入模块 => go 找到第 1 步下载的文件夹:
ffmpeg4android_demo_studio\ffmpeg4android_lib ffmpeg4android_demo_studio\ffmpeg4android_lib
Add permission in AndroidManifest.xml在 AndroidManifest.xml 中添加权限
if the version is higher than Android 6, add the following code in onCreate() of your Activity如果版本高于Android 6,在你的Activity的onCreate()中添加如下代码
GeneralUtils.checkForPermissionsMAndAbove(MainActivity.this, false);
Alt+Enter if encounter red font, AndroidStudio would help you to modify "build.gradle(Module)" Alt+Enter 如果遇到红色字体,AndroidStudio 会帮你修改“build.gradle(Module)”
(Not sure if necessary) In build.gradle(Module) (不确定是否有必要)在 build.gradle(Module)
Android{....... defaultConfig{.... targetSdkVersion... ndk{ abiFilter "armeabi-v7a" } } }..... dependencies{... compile project(':ffmpeg4android_lib') } Android{....... defaultConfig{.... targetSdkVersion... ndk{ abiFilter "armeabi-v7a" } } }..... 依赖项{... compile project(':ffmpeg4android_lib') }
add following code in "gradle.properties"在“gradle.properties”中添加以下代码
android.useDeprecatedNdk=true android.useDeprecatedNdk=true
and then async project How to use WaterMarkHelper(by Johnny Tu) to add watermark on video After import "WaterMarkHelper.java" in your project, declare the following in your Activity然后是异步项目 How to use WaterMarkHelper(by Johnny Tu) 在视频上添加水印 在您的项目中导入“WaterMarkHelper.java”后,在您的活动中声明以下内容
WaterMarkHelper myHelper; WaterMarkHelper 我的助手;
initialize myHelper with arguments用 arguments 初始化 myHelper
Arguments description: Arguments 说明:
String inputVideoPath (ex:"/sdcard/input.mp4")
String inputWaterMarkPath (ex:"/sdcard/waterMark.png")
String outputVideoPath (ex:"/sdcard/output.mp4")
String waterMarkX the X-coordinate
Video width: main_w, Video height: main_h, Image Width: overlay_w, Image Height: overlay_h
String waterMarkY
Download This下载这个
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.