Android FFMPEG 开发Android 中执行 FFMPEG 指令 ( 集成 mobile-ffmpeg 框架 | 完整代码示例 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android FFMPEG 开发Android 中执行 FFMPEG 指令 ( 集成 mobile-ffmpeg 框架 | 完整代码示例 )相关的知识,希望对你有一定的参考价值。

文章目录





一、配置远程 Maven 仓库



android Studio 工程 根目录的 build.gradle 构建脚本中 , 配置

repositories 
    mavenCentral()

完整代码如下 :

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript 
    ext.kotlin_version = "1.5.0"
    repositories 
        google()
        mavenCentral()
    
    dependencies 
        classpath "com.android.tools.build:gradle:4.2.1"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    


allprojects 
    repositories 
        google()
        mavenCentral()
        jcenter() // Warning: this repository is going to shut down soon
    


task clean(type: Delete) 
    delete rootProject.buildDir





二、配置依赖



在 Module 下的 build.gradle 构建脚本中配置依赖库 :

dependencies 
    implementation 'com.arthenica:mobile-ffmpeg-full:4.4'

完整代码如下 :

plugins 
    id 'com.android.application'
    id 'kotlin-android'


android 
    compileSdkVersion 31
    buildToolsVersion "30.0.3"

    defaultConfig 
        applicationId "kim.hsl.mobileffmpegdemo"
        minSdkVersion 24
        targetSdkVersion 31
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    

    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        
    
    compileOptions 
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    
    kotlinOptions 
        jvmTarget = '1.8'
    


dependencies 

    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.6.0'
    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.google.android.material:material:1.5.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

    implementation 'com.arthenica:mobile-ffmpeg-full:4.4'





三、Kotlin 中执行 FFmpeg 命令



在 kotlin 代码中调用 mobile-ffmpeg 框架中提供的 执行 FFmpeg 命令的方法 :

执行的 FFmpeg 命令为 :

ffmpeg -version

完整代码如下 :

package kim.hsl.mobileffmpegdemo

import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.arthenica.mobileffmpeg.Config
import com.arthenica.mobileffmpeg.FFmpeg


class MainActivity : AppCompatActivity() 
    override fun onCreate(savedInstanceState: Bundle?) 
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)


        val rc = FFmpeg.execute("-version")

        if (rc == Config.RETURN_CODE_SUCCESS) 
            Log.i(Config.TAG, "命令执行成功")
         else if (rc == Config.RETURN_CODE_CANCEL) 
            Log.i(Config.TAG, "用户取消了命令")
         else 
            Log.i(Config.TAG, String.format("命令执行失败, 返回值=%d", rc))
        

        Config.printLastCommandOutput(Log.INFO)
    





四、FFmpeg 命令执行结果查看



执行结果如下 : 在 华为 Mate30 中 , 对应 Android 10 系统版本也可以执行 ;

ffmpeg version v4.4-dev-416
 Copyright (c) 2000-2020 the FFmpeg developers
built with Android (6454773 based on r365631c2) clang version 9.0.8 (https://android.googlesource.com/toolchain/llvm-project 98c855489587874b2a325e7a516b99d838599c6f) (based on LLVM 9.0.8svn)
configuration: --cross-prefix=aarch64-linux-android- --sysroot=/files/android-sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/sysroot --prefix=/home/taner/Projects/mobile-ffmpeg/prebuilt/android-arm64/ffmpeg --pkg-config=/usr/bin/pkg-config --enable-version3 --arch=aarch64 --cpu=armv8-a --cc=aarch64-linux-android24-clang --cxx=aarch64-linux-android24-clang++ --extra-libs='-L/home/taner/Projects/mobile-ffmpeg/prebuilt/android-arm64/cpu-features/lib -lndk_compat' --target-os=android --enable-neon --enable-asm --enable-inline-asm --enable-cross-compile --enable-pic --enable-jni --enable-optimizations --enable-swscale --enable-shared --enable-v4l2-m2m --disable-outdev=fbdev --disable-indev=fbdev --enable-small --disable-openssl --disable-xmm-clobber-test --disable-debug --enable-lto --disable-neon-clobber-test --disable-programs --disable-postproc --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --disable-sndio --disable-schannel --disable-securetransport --disable-xlib --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --disable-videotoolbox --disable-audiotoolbox --disable-appkit --disable-alsa --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-gmp --enable-gnutls --enable-libmp3lame --enable-libass --enable-iconv --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxml2 --enable-libopencore-amrnb --enable-libshine --enable-libspeex --enable-libwavpack --enable-libkvazaar --enable-libilbc --enable-libopus --enable-libsnappy --enable-libsoxr --enable-libaom --enable-libtwolame --disable-sdl2 --enable-libvo-amrwbenc --enable-zlib --enable-mediacodec
libavutil      56. 55.100 / 56. 55.100
libavcodec     58. 96.100 / 58. 96.100
libavformat    58. 48.100 / 58. 48.100
libavdevice    58. 11.101 / 58. 11.101
libavfilter     7. 87.100 /  7. 87.100
libswscale      5.  8.100 /  5.  8.100
libswresample   3.  8.100 /  3.  8.100





五、源码下载



源码下载地址 : https://download.csdn.net/download/han1202012/85034217

以上是关于Android FFMPEG 开发Android 中执行 FFMPEG 指令 ( 集成 mobile-ffmpeg 框架 | 完整代码示例 )的主要内容,如果未能解决你的问题,请参考以下文章

Android FFMPEG 开发Android 中使用 FFMPEG 对 MP3 文件进行混音操作

Android FFMPEG 开发Android 中使用 FFMPEG 将 PCM 音频采样转为 MP3 格式

Android FFMPEG 开发Android 中执行 FFMPEG 指令 ( mobile-ffmpeg 开源项目介绍 | 集成 mobile-ffmpeg 框架 )

Android FFMPEG 开发Android 中执行 FFMPEG 指令 ( 集成 mobile-ffmpeg 框架 | 完整代码示例 )

Android NDK开发之旅38--FFmpeg视频添加水印

Android NDK开发之FFmpeg视频添加水印