diff --git a/app/src/main/java/com/coder/ffmpegtest/ui/KFFmpegCommandActivity.kt b/app/src/main/java/com/coder/ffmpegtest/ui/KFFmpegCommandActivity.kt index 5a5e8ed..16564c6 100644 --- a/app/src/main/java/com/coder/ffmpegtest/ui/KFFmpegCommandActivity.kt +++ b/app/src/main/java/com/coder/ffmpegtest/ui/KFFmpegCommandActivity.kt @@ -146,6 +146,7 @@ class KFFmpegCommandActivity : AppCompatActivity() { 36 -> hls2Video() 37 -> audio2Amr() 38 -> makeMuteAudio() + 39 -> cropVideoScreen() } } }) @@ -530,6 +531,13 @@ class KFFmpegCommandActivity : AppCompatActivity() { } } + private fun cropVideoScreen() { + targetPath = externalCacheDir.toString() + File.separator + "target.mp4" + GlobalScope.launch { + FFmpegCommand.runCmd(FFmpegUtils.cropVideoScreen(mVideoPath, targetPath, 500, 500, 0, 100), callback("裁切视频画面成功", targetPath)) + } + } + private fun callback(msg: String, targetPath: String?): CommonCallBack? { return object : CommonCallBack() { override fun onStart() { diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 8d41ce0..03d4230 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -67,6 +67,7 @@ 合成hls-视频 音频转码amr 生成静音音频 + 视频画面裁切 \ No newline at end of file diff --git a/ffmpeg/src/main/java/com/coder/ffmpeg/utils/FFmpegUtils.kt b/ffmpeg/src/main/java/com/coder/ffmpeg/utils/FFmpegUtils.kt index 8869c9a..fb7ec70 100644 --- a/ffmpeg/src/main/java/com/coder/ffmpeg/utils/FFmpegUtils.kt +++ b/ffmpeg/src/main/java/com/coder/ffmpeg/utils/FFmpegUtils.kt @@ -913,4 +913,20 @@ object FFmpegUtils { command = String.format(command, src,url) return command.split(" ").toTypedArray() } + + /** + * 使用ffmpeg进行视频画面裁切 + * @param srcFile 源文件 + * @param targetFile 目标文件 + * @param width 输出视频宽度 + * @param height 输出视频高度 + * @param x 裁切视频的基准点x坐标 + * @param y 裁切视频的基准点y坐标 + */ + @JvmStatic + fun cropVideoScreen(srcFile: String?, targetFile: String?, width: Int, height: Int, x: Int, y: Int): Array { + var command = "ffmpeg -i %s -vf crop=%d:%d:%d:%d %s -y" + command = String.format(command, srcFile, width, height, x, y, targetFile) + return command.split(" ").toTypedArray() + } } \ No newline at end of file