diff --git a/README.md b/README.md
index 9e6a7fe..8f92a8f 100644
--- a/README.md
+++ b/README.md
@@ -15,6 +15,8 @@ android端基于FFmpeg库的使用。
- #### 视频剪切
- #### 视频转码
- #### 视频截图
+- #### 视频降噪
+- #### 视频抽帧
- #### 视频转GIF动图
- #### 视频添加水印
- #### 视频画面拼接
diff --git a/app/src/main/java/com/frank/ffmpeg/activity/VideoHandleActivity.java b/app/src/main/java/com/frank/ffmpeg/activity/VideoHandleActivity.java
index f2d0630..cf50e19 100644
--- a/app/src/main/java/com/frank/ffmpeg/activity/VideoHandleActivity.java
+++ b/app/src/main/java/com/frank/ffmpeg/activity/VideoHandleActivity.java
@@ -76,6 +76,7 @@ public class VideoHandleActivity extends AppCompatActivity implements View.OnCli
findViewById(R.id.btn_reverse_video).setOnClickListener(this);
findViewById(R.id.btn_denoise_video).setOnClickListener(this);
findViewById(R.id.btn_to_image).setOnClickListener(this);
+ findViewById(R.id.btn_pip).setOnClickListener(this);
}
private void setVisible() {
@@ -92,6 +93,7 @@ public class VideoHandleActivity extends AppCompatActivity implements View.OnCli
findViewById(R.id.btn_reverse_video).setVisibility(View.VISIBLE);
findViewById(R.id.btn_denoise_video).setVisibility(View.VISIBLE);
findViewById(R.id.btn_to_image).setVisibility(View.VISIBLE);
+ findViewById(R.id.btn_pip).setVisibility(View.VISIBLE);
}
private void setGone() {
@@ -108,6 +110,7 @@ public class VideoHandleActivity extends AppCompatActivity implements View.OnCli
findViewById(R.id.btn_reverse_video).setVisibility(View.GONE);
findViewById(R.id.btn_denoise_video).setVisibility(View.GONE);
findViewById(R.id.btn_to_image).setVisibility(View.GONE);
+ findViewById(R.id.btn_pip).setVisibility(View.GONE);
}
@Override
@@ -153,6 +156,9 @@ public class VideoHandleActivity extends AppCompatActivity implements View.OnCli
case R.id.btn_to_image:
handleType = 12;
break;
+ case R.id.btn_pip:
+ handleType = 13;
+ break;
default:
handleType = 0;
break;
@@ -291,6 +297,19 @@ public class VideoHandleActivity extends AppCompatActivity implements View.OnCli
int mFrameRate = 10;//帧率(从视频中每秒抽多少帧)
commandLine = FFmpegUtil.videoToImage(srcFile, mStartTime, mDuration, mFrameRate, imagePath);
break;
+ case 13://两个视频合成画中画
+ String inputFile1 = PATH + File.separator + "beyond.mp4";
+ String inputFile2 = PATH + File.separator + "small_girl.mp4";
+ if (!FileUtil.checkFileExist(inputFile1) && !FileUtil.checkFileExist(inputFile2)){
+ return;
+ }
+ //x、y坐标点需要根据全屏视频与小视频大小,进行计算
+ //比如:全屏视频为320x240,小视频为120x90,那么x=200 y=150
+ int x = 200;
+ int y = 150;
+ String picInPic = PATH + File.separator + "PicInPic.mp4";
+ commandLine = FFmpegUtil.picInPicVideo(inputFile1, inputFile2, x, y, picInPic);
+ break;
default:
break;
}
diff --git a/app/src/main/java/com/frank/ffmpeg/util/FFmpegUtil.java b/app/src/main/java/com/frank/ffmpeg/util/FFmpegUtil.java
index fa07f50..d6baf90 100644
--- a/app/src/main/java/com/frank/ffmpeg/util/FFmpegUtil.java
+++ b/app/src/main/java/com/frank/ffmpeg/util/FFmpegUtil.java
@@ -299,4 +299,21 @@ public class FFmpegUtil {
return toImage.split(" ");
}
+ /**
+ * 视频叠加成画中画
+ * @param inputFile1 输入文件
+ * @param inputFile2 输入文件
+ * @param targetFile 输出文件
+ * @param x 小视频起点x坐标
+ * @param y 小视频起点y坐标
+ *
+ * @return 视频画中画的命令行
+ */
+ @SuppressLint("DefaultLocale")
+ public static String[] picInPicVideo(String inputFile1, String inputFile2, int x, int y, String targetFile){
+ String reverseVideo = "ffmpeg -i %s -i %s -filter_complex overlay=%d:%d %s";
+ reverseVideo = String.format(reverseVideo, inputFile1, inputFile2, x, y, targetFile);
+ return reverseVideo.split(" ");
+ }
+
}
diff --git a/app/src/main/res/layout/activity_video_handle.xml b/app/src/main/res/layout/activity_video_handle.xml
index 8ea597c..73a5c85 100644
--- a/app/src/main/res/layout/activity_video_handle.xml
+++ b/app/src/main/res/layout/activity_video_handle.xml
@@ -24,21 +24,21 @@
android:id="@+id/btn_video_transform"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginTop="10dp"
+ android:layout_marginTop="4dp"
android:text="@string/video_transform"/>
@@ -46,28 +46,28 @@
android:id="@+id/btn_screen_shot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginTop="10dp"
+ android:layout_marginTop="4dp"
android:text="@string/video_screen_shot"/>
@@ -75,43 +75,51 @@
android:id="@+id/btn_combine_video"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginTop="10dp"
+ android:layout_marginTop="4dp"
android:text="@string/video_from_photo"/>
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ca5d81d..16c905e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -38,6 +38,7 @@
视频倒播
视频降噪
视频转图片
+ 视频画中画
切换
开始