Add: remove logo from video

dev
xufuji456 4 years ago
parent 8000dca856
commit 0b4e896f39
  1. 14
      app/src/main/java/com/frank/ffmpeg/activity/VideoHandleActivity.kt
  2. 12
      app/src/main/java/com/frank/ffmpeg/util/FFmpegUtil.java
  3. 7
      app/src/main/res/layout/activity_video_handle.xml
  4. 1
      app/src/main/res/values-en/strings.xml
  5. 1
      app/src/main/res/values/strings.xml

@ -120,7 +120,8 @@ class VideoHandleActivity : BaseActivity() {
R.id.btn_thumbnail, R.id.btn_thumbnail,
R.id.btn_add_subtitle, R.id.btn_add_subtitle,
R.id.btn_rotate, R.id.btn_rotate,
R.id.btn_gop R.id.btn_gop,
R.id.btn_remove_logo
) )
} }
@ -183,12 +184,12 @@ class VideoHandleActivity : BaseActivity() {
val retriever = MediaMetadataRetriever() val retriever = MediaMetadataRetriever()
retriever.setDataSource(srcFile) retriever.setDataSource(srcFile)
val mBitRate = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE) val mBitRate = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE)
if (mBitRate != null && !mBitRate.isEmpty()) { if (mBitRate != null && mBitRate.isNotEmpty()) {
val probeBitrate = Integer.valueOf(mBitRate) val probeBitrate = Integer.valueOf(mBitRate)
bitRate = probeBitrate / 1000 / 100 * 100 bitRate = probeBitrate / 1000 / 100 * 100
} }
//1:top left 2:top right 3:bottom left 4:bottom right //1:top left 2:top right 3:bottom left 4:bottom right
val location = 2 val location = 1
val offsetXY = 5 val offsetXY = 5
when (waterMarkType) { when (waterMarkType) {
TYPE_IMAGE// image TYPE_IMAGE// image
@ -216,6 +217,13 @@ class VideoHandleActivity : BaseActivity() {
} }
} }
} }
R.id.btn_remove_logo//Remove logo from video: suppress logo by a simple interpolation
-> {
val removeLogoPath = PATH + File.separator + "removeLogo" + suffix
val widthL = 64
val heightL = 40
commandLine = FFmpegUtil.removeLogo(srcFile, 5, 5, widthL, heightL, removeLogoPath)
}
R.id.btn_generate_gif//convert video into gif R.id.btn_generate_gif//convert video into gif
-> { -> {
val video2Gif = PATH + File.separator + "video2Gif.gif" val video2Gif = PATH + File.separator + "video2Gif.gif"

@ -413,6 +413,18 @@ public class FFmpegUtil {
return waterMarkCmd.split(" "); return waterMarkCmd.split(" ");
} }
/**
* Remove watermark from video: Suppress logo by a simple interpolation of the surrounding pixels.
* Just set a rectangle covering the logo and watch it disappear
*
* @return delogo cmd
*/
public static String[] removeLogo(String inputPath, int x, int y, int width, int height, String outputPath) {
String delogoCmd = "ffmpeg -i %s -filter_complex delogo=x=%d:y=%d:w=%d:h=%d %s";
delogoCmd = String.format(Locale.getDefault(), delogoCmd, inputPath, x, y, width, height, outputPath);
return delogoCmd.split(" ");
}
/** /**
* generate a palette for gif * generate a palette for gif
* *

@ -56,6 +56,13 @@
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:text="@string/video_water_mark"/> android:text="@string/video_water_mark"/>
<Button
android:id="@+id/btn_remove_logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="@string/video_remove_logo"/>
<Button <Button
android:id="@+id/btn_generate_gif" android:id="@+id/btn_generate_gif"
android:layout_width="wrap_content" android:layout_width="wrap_content"

@ -38,6 +38,7 @@
<string name="video_cut">Video cut</string> <string name="video_cut">Video cut</string>
<string name="video_concat">Video concat</string> <string name="video_concat">Video concat</string>
<string name="video_water_mark">Video watermark</string> <string name="video_water_mark">Video watermark</string>
<string name="video_remove_logo">Remove logo</string>
<string name="video_to_gif">To Gif</string> <string name="video_to_gif">To Gif</string>
<string name="video_transform">Video transform</string> <string name="video_transform">Video transform</string>
<string name="video_screen_shot">Screen shot</string> <string name="video_screen_shot">Screen shot</string>

@ -38,6 +38,7 @@
<string name="video_cut">视频剪切</string> <string name="video_cut">视频剪切</string>
<string name="video_concat">视频拼接</string> <string name="video_concat">视频拼接</string>
<string name="video_water_mark">视频水印</string> <string name="video_water_mark">视频水印</string>
<string name="video_remove_logo">去除水印</string>
<string name="video_to_gif">视频转Gif</string> <string name="video_to_gif">视频转Gif</string>
<string name="video_transform">视频转码</string> <string name="video_transform">视频转码</string>
<string name="video_screen_shot">视频截图</string> <string name="video_screen_shot">视频截图</string>

Loading…
Cancel
Save