簡易步驟將浮水印或圖片加到影片上(AndroidStudio+FFmpeg)

在自己的Android project中導入ffmpeg (Only use Java)

  1. 下載 https://drive.google.com/file/d/0B2aT0QoEmtuaN0VJZ2Z4ODY3T2s/view 並且用AndroidStudio開啟載好的project, 然後將它要你裝的東西裝一裝或者更新一些套件
  2. 回到你自己的project, 點選File => New => import module => 選擇步驟1.載好的資料夾:
    ffmpeg4android_demo_studio\ffmpeg4android_lib
    
  3. 在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)檔

  4. (不確定是否必要) 在build.gradle(App)中

     Android{
     .......
         defaultConfig{
         ....
             targetSdkVersion ...
             後面加入
             ndk{
                 abiFilter "armeabi-v7a"
             }
         }
     }
     .....
     dependencies{
         ...
         若沒有下面這行則加入
         compile project(':ffmpeg4android_lib')
     }
    
  5. 在gradle.properties加入

     android.useDeprecatedNdk=true
    

    然後async project

    使用WaterMarkHelper 將影片加上浮水印/圖片

  6. 導入WaterMarkHelper.java之後, 在Activity底下宣告
     WaterMarkHelper myHelper;
    
  7. 在要使用浮水印功能的地方初始化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軸的正中間
    
  8. 執行浮水印功能

     myHelper.addVideoWaterMark(MainActivity.this); //MainActivity改成你自己的Activity
    

    上面那行的外面要包try/catch, 按Alt+Enter它應該會幫你包

    範例code:

         try {
                 myHelper.addVideoWaterMark(MainActivity.this);
         } catch (CommandValidationException e) {
                 e.printStackTrace();
         }
    

參考資料:

Android Warzone - FFmpeg4Android

results matching ""

    No results matching ""