首页 > 其他分享 >FFmpeg 编译集成至android

FFmpeg 编译集成至android

时间:2023-04-14 12:45:17浏览次数:47  
标签:info 集成 FFmpeg current 编译 codec android

FFmpeg 编译问题记录

1.此前没有编译大型的C项目的场景,甚至对整个编译过程已经陌生了,重拾编译之路,以前的编译都是开IDE去操作,现在需要使用编译工具链去编译整套项目,所以需要了解CMake,configure等工具的使用。

2. 简单学习configure,cmake等构建工具后,开始编译 Cmake 学习记录
3. ffmpeg的目录下已经有生成了configure脚本

4.大致了解完作用后 跟着这个https://www.jianshu.com/p/94bb964b4305 这个链接走一遍编译流程

版本说明
ndk:23.1.7779620
编译完成
主要是需要根据编译的问题去处理
strip文件找不到 需要到其它ndk版本的文件夹去寻找
编译ffpmpeg 之后在项目的ffmpeg-android 文件夹中有对应so 和 include文件夹 可供android引入进行二次开发

5. 集成至android ndk 开发
ndk开发的原型是cmake 所以得按照这个工具的思路去集成
按照android集成 这个博客的思路可以集成成功
但是我的代码是最新的版本 时间点 2023.1.16 版本应该是ffpmeg 5.1
但是其中FFmpeg4.0版本以后,avcodec_register_all()等方法已经过时 所以android集成中的内容还需要稍微更改一下,主要是修改遍历编解码器的遍历
主要实现

JNIEXPORT jstring JNICALL
Java_com_joker_ffmpeg_FfmpegJni_00024Companion_ffmpegInfo(JNIEnv *env, jobject thiz) {
    char info[40000] = {0};
    const AVCodec *current_codec = nullptr;
    void *i = 0;
    while ((current_codec = av_codec_iterate(&i))) {
        if (av_codec_is_encoder(current_codec)) {
            sprintf(info, "%s encoder [%s]\n",info, current_codec->name);
        }else if(av_codec_is_decoder(current_codec)){
            sprintf(info, "%s decoder [%s]\n",info, current_codec->name);
        }
    }
    return env->NewStringUTF(info);
}

6.效果

 

标签:info,集成,FFmpeg,current,编译,codec,android
From: https://www.cnblogs.com/Keep-J0K3R/p/17317957.html

相关文章

  • blockchain | 交叉编译armv8的pbc库
    blockchain|交叉编译armv8的pbc库这块儿网上是没啥具体的资料的,因为要测试pbc库在安卓上的性能,但是网上pbc的支持只到armv7,就只能自己编译了。大致流程:下载gmp库源码下载pbc库源码编译gmp编译pbc编译测试程序这里使用的是aarch64-linux-gnu-g++andaarch64-linux-gnu......
  • Android 平台使用 appium 自动化操作 webView 的经验
    更多内容见草稿:https://wkmcyz.notion.site/Appium-H5-c9c287855ef74ef0ae5d8f819da3923f本文章主要介绍在Android平台上使用appium对app内的webView进行自动化操作上的一些知识,包括一些配置和可以进行的操作等。需要读者:熟悉如何使用appium进行nativeapp的自动......
  • android: minSdkVersion、targetSdkVersion、CompileSdkVersion三个api版本号的区别
    一,minSdkVersion:   app可以安装的最低的api版本:   1,安装:googleplay和应用市场会根据用户的api版本,           判断用户是否可以看到你的app    2, 运行:在minSdkVersion指定版本的api上运行时,           ......
  • android S 上 安装apk出现android.os.FileUriExposedException
    报错:android.os.FileUriExposedException:file:///data/user/0/com.example.overlay.exposedbeyondappthroughIntent.getData()原因:andorid7.0系统以后,引入“私有目录被限制访问”,“StrictModeAPI政策”导致的问题。解决办法很简单。就是用新的方式获取uri。”St......
  • ARM平台内核的编译
    目的:在Ubuntu上编译出树莓派的内核。由于linux内核非常庞大,大约有1.4w个c文件,一千多万行代码,但是linux内核编译出来才才几M,这是为什么呢?因为linux是开源的,支持多平台、多架构。所以里面包含了很多平台的代码。我们现在要的是树莓派这个平台上的内核,所以其他的平台......
  • Visual Stadio 编译提示 The BaseOutputPath/OutputPath property is not set for pr
    完整的错误信息是:TheBaseOutputPath/OutputPathpropertyisnotsetforproject'xx.csproj'.PleasechecktomakesurethatyouhavespecifiedavalidcombinationofConfigurationandPlatformforthisproject.Configuration='Debug'Plat......
  • adb命令获取android app FPS 执行命令后只出现一行16666666的解决方案
    一、问题描述使用命令command='adbshelldumpsysSurfaceFlinger--latency{}/{}#0'.format(package_name,activity)获取androidapp的fps数据,执行命令后街股票打印如下:  二、问题分析1、刚开始以为是命令里面的SurfaceView写的有问题,执行命令adbshelldumpsys......
  • Android性能优化之APK瘦身
    结构分析首先上传一张瘦身前通过Analyzeapp分析出来的图片(打开方式:AndroidStudio下——>Build——>Analyzeapp):imageAPK包结构如下:lib/:包含特定于处理器软件层的编译代码。该目录包含了每种平台的子目录,像armeabi,armeabi-v7a,arm64-v8a,x86,x86_64,和mips。大多数情况......
  • Android开发startActivityForResult()弃用,推荐使用registerForActivityResult()方法
    SecondActivity中publicclassSecondActivityextendsAppCompatActivity{privatestaticfinalStringTAG="SecondActivity";@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);......
  • Android技术分享 | 一行代码实现屏幕、声音采集
    之前发布过一行代码实现安卓屏幕采集编码,并介绍了如何屏幕采集编码并进行了封装,简单的调用即可实现MediaProjection权限申请、H264硬编码、错误处理等功能。本文将介绍新增的功能,还是只需一行代码即可实现屏幕、声音采集。一行代码实现屏幕采集编码之前的文章,我们已经介绍过如何......