簡易步驟將浮水印或圖片加到影片上(AndroidStudio+FFmpeg)
在自己的Android project中導入ffmpeg (Only use Java)
- 下載 https://drive.google.com/file/d/0B2aT0QoEmtuaN0VJZ2Z4ODY3T2s/view 並且用AndroidStudio開啟載好的project, 然後將它要你裝的東西裝一裝或者更新一些套件
- 回到你自己的project, 點選File => New => import module => 選擇步驟1.載好的資料夾:
ffmpeg4android_demo_studio\ffmpeg4android_lib
在AndroidManifest.xml中加上permission
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WAKE_LOCK" />
若是Android 6以上, 請在MainActivity的onCreate()中, 加上
GeneralUtils.checkForPermissionsMAndAbove(MainActivity.this, false);
遇到紅字則Alt+Enter 它會幫你改build.gradle(App)檔
(不確定是否必要) 在build.gradle(App)中
Android{ ....... defaultConfig{ .... targetSdkVersion ... 後面加入 ndk{ abiFilter "armeabi-v7a" } } } ..... dependencies{ ... 若沒有下面這行則加入 compile project(':ffmpeg4android_lib') }
在gradle.properties加入
android.useDeprecatedNdk=true
然後async project
使用WaterMarkHelper 將影片加上浮水印/圖片
- 導入WaterMarkHelper.java之後,
在Activity底下宣告
WaterMarkHelper myHelper;
在要使用浮水印功能的地方初始化myHelper並設定參數
參數說明:
String inputVideoPath 輸入影片的檔名路徑(ex:"/sdcard/input.mp4") String inputWaterMarkPath 輸入浮水印圖片的檔名路徑(ex:"/sdcard/waterMark.png") String outputVideoPath 輸出影片的檔名路徑(ex:"/sdcard/output.mp4") String waterMarkX 浮水印在影片裡的橫向位置(左側為0), 可利用影片以及浮水印寬度及高度的參數 影片寬度: main_w, 影片高度: main_h, 圖片寬度: overlay_w, 圖片高度: overlay_h String waterMarkY 浮水印在影片裡的直向位置(上方為0), 同樣可利用寬高參數
範例code:
myHelper = new WaterMarkHelper("/sdcard/in.mp4", //請確保in.mp4存在/sdcard/ "/sdcard/watermark.png", //請確保watermark.png存在/sdcard/ "/sdcard/testOut.mp4", // "main_w/2 - overlay_w/2", // x軸的正中間 "main_h/2 - overlay_h/2"); // y軸的正中間
執行浮水印功能
myHelper.addVideoWaterMark(MainActivity.this); //MainActivity改成你自己的Activity
上面那行的外面要包try/catch, 按Alt+Enter它應該會幫你包
範例code:
try { myHelper.addVideoWaterMark(MainActivity.this); } catch (CommandValidationException e) { e.printStackTrace(); }