From a08f24220fac1ef572f13cf770e6445a620fb6de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E7=81=BF=E8=BE=89?= <122565648@qq.com> Date: Sun, 22 Mar 2020 21:11:03 +0800 Subject: [PATCH] Load ffmpeg config info --- .../ffmpeg/invoker/demo/MainActivity.java | 17 +++++++++++++++++ app/src/main/res/layout/activity_main.xml | 14 ++++++++++++-- library/src/main/cpp/ffmpeg-invoker.c | 7 +++++++ library/src/main/cpp/ffmpeg-invoker.h | 5 ++++- .../xch168/ffmpeg/invoker/FFmpegInvoker.java | 13 +++++++++++++ 5 files changed, 53 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/github/xch168/ffmpeg/invoker/demo/MainActivity.java b/app/src/main/java/com/github/xch168/ffmpeg/invoker/demo/MainActivity.java index fab98d0..b07f7a2 100644 --- a/app/src/main/java/com/github/xch168/ffmpeg/invoker/demo/MainActivity.java +++ b/app/src/main/java/com/github/xch168/ffmpeg/invoker/demo/MainActivity.java @@ -2,10 +2,13 @@ package com.github.xch168.ffmpeg.invoker.demo; import android.os.Build; import android.os.Bundle; +import android.text.method.ScrollingMovementMethod; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; +import com.github.xch168.ffmpeg.invoker.FFmpegInvoker; + public class MainActivity extends AppCompatActivity { @@ -16,6 +19,10 @@ public class MainActivity extends AppCompatActivity { TextView tv = findViewById(R.id.tv_cpu_abi); tv.setText("CPU_ABI: " + getCpuAbi()); + + TextView configView = findViewById(R.id.tv_config_info); + configView.setMovementMethod(ScrollingMovementMethod.getInstance()); + configView.setText(getConfigInfo()); } private String getCpuAbi() { @@ -26,4 +33,14 @@ public class MainActivity extends AppCompatActivity { } } + private String getConfigInfo() { + String configInfo = FFmpegInvoker.getConfigInfo(); + String[] configItems = configInfo.split(" "); + StringBuilder configInfoBuilder = new StringBuilder(); + for (String config : configItems) { + configInfoBuilder.append(config).append('\n'); + } + return configInfoBuilder.toString(); + } + } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index cb99279..3b58c09 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -10,9 +10,19 @@ android:id="@+id/tv_cpu_abi" android:layout_width="wrap_content" android:layout_height="wrap_content" - app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" - app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toTopOf="parent" + android:layout_marginTop="20dp"/> + + \ No newline at end of file diff --git a/library/src/main/cpp/ffmpeg-invoker.c b/library/src/main/cpp/ffmpeg-invoker.c index b8e785c..9a40cea 100644 --- a/library/src/main/cpp/ffmpeg-invoker.c +++ b/library/src/main/cpp/ffmpeg-invoker.c @@ -99,4 +99,11 @@ Java_com_github_xch168_ffmpeg_invoker_FFmpegInvoker_exit(JNIEnv *env, jclass typ (*env)->GetJavaVM(env, &jvm); m_clazz = (*env)->NewGlobalRef(env, type); ffmpeg_thread_cancel(); +} + +JNIEXPORT jstring JNICALL +Java_com_github_xch168_ffmpeg_invoker_FFmpegInvoker_getConfigInfo(JNIEnv *env, jclass clazz) { + char info[10000] = {0}; + sprintf(info, "%s\n", avcodec_configuration()); + return (*env)->NewStringUTF(env, info); } \ No newline at end of file diff --git a/library/src/main/cpp/ffmpeg-invoker.h b/library/src/main/cpp/ffmpeg-invoker.h index 2eedeb4..56b8529 100644 --- a/library/src/main/cpp/ffmpeg-invoker.h +++ b/library/src/main/cpp/ffmpeg-invoker.h @@ -12,9 +12,12 @@ Java_com_github_xch168_ffmpeg_invoker_FFmpegInvoker_exec(JNIEnv *, jclass, jint, JNIEXPORT void JNICALL Java_com_github_xch168_ffmpeg_invoker_FFmpegInvoker_exit(JNIEnv *, jclass); +JNIEXPORT jstring JNICALL +Java_com_github_xch168_ffmpeg_invoker_FFmpegInvoker_getConfigInfo(JNIEnv *, jclass); + #ifdef __cplusplus } #endif #endif -void ffmpeg_progress(float progress); +void ffmpeg_progress(float progress); \ No newline at end of file diff --git a/library/src/main/java/com/github/xch168/ffmpeg/invoker/FFmpegInvoker.java b/library/src/main/java/com/github/xch168/ffmpeg/invoker/FFmpegInvoker.java index 76546d0..ff79aec 100644 --- a/library/src/main/java/com/github/xch168/ffmpeg/invoker/FFmpegInvoker.java +++ b/library/src/main/java/com/github/xch168/ffmpeg/invoker/FFmpegInvoker.java @@ -1,9 +1,12 @@ package com.github.xch168.ffmpeg.invoker; +import android.util.Log; + /** * Created by XuCanHui on 2020/3/14. */ public class FFmpegInvoker { + private static final String TAG = "FFmpegInvoker"; static { System.loadLibrary("ffmpeg-invoker"); @@ -15,10 +18,20 @@ public class FFmpegInvoker { public static native int exec(int argc, String[] argv); public static native void exit(); + public static native String getConfigInfo(); + public static void exec(String[] cmds, long duration, Callback listener) { sCallback = listener; sDuration = duration; + StringBuilder cmdBuilder = new StringBuilder(); + for (String cmd : cmds) + { + cmdBuilder.append(" ").append(cmd); + } + + Log.i(TAG, "ffmpeg cmd:" + cmdBuilder.toString()); + exec(cmds.length, cmds); }