windows下用cygwin编译android版ijkplayer

2023-11-14

1. 环境搭建

1.1 安装cygwin,并安装git,make,ysam

具体安装过程网上有很多资料,不再详述。

1.2 android sdk和android ndk下载和安装

参见网上资料

1.3 下载ijkplayer源码

git clone https://github.com/Bilibili/ijkplayer.git ijkplayer
cd ijkplayer
git checkout -B latest k0.3.1

1.4 设置环境变量

在cygwin的home目录下,修改 ~/.bash_profile 或 ~/.profile文件,添加

 export ANDROID_SDK=<your sdk path>
 export ANDROID_NDK=<your ndk path>

其中的路径根据实际情况填写。

2. 编译过程

进入ijkplayer源码根目录

cd config
rm module.sh
ln -s module-default.sh module.sh
#以上是默认的设置,也可以使用
# ln -s module-lite.sh module.sh

回到ijkplayer源码根目录

# 下载ffmpeg源码
./init-android.sh

cd android/contrib
./compile-ffmpeg.sh clean
#编译ffmpeg,,以armv7a架构的cpu代码为例进行编译
./compile-ffmpeg.sh armv7a

#编译ijkplayer
cd ..
./compile-ijk.sh armv7a

如果编译成功的话,会在
F:\\ijkplayer\android\ijkplayer\player-armv7a\src\main\libs\armeabi-v7a下生成三个so库文件
编译生成的共享库

3. 编译过程中容易出问题的地方

注意:该步容易出问题,我在开始时编译只生成了一个libijkffmpeg.so。原因是F:\\ijkplayer\android\ijkplayer\player-armv7a\src\main\jni下使用了软链接,ijkmedia和android-ndk-prof分别链接到ijkplayer根目录下的/ijkmedia和/ijkprof,而cygwin和android NDK在处理文件夹软链接时似乎有问题,所以并没有执行ijkmedia和ijkprof的编译。

基于以上问题,可以做如下修改

  • 将ijkmedia和ijkprof的makefile文件写在F:\ijkplayer\android\ijkplayer\player-armv7a\src\main\jni\Android.mk
    文件的最后,用include包含进来
    这里写图片描述

  • 删除F:\ijkplayer\android\ijkplayer\player-armv7a\src\main\jni下的ijkmedia和android-ndk-prof

  • 将compile-ijk.sh中生成android-ndk-prof链接文件的部分注释掉
    这里写图片描述

4. 将工程导入eclipse中,编译并运行

File -> New -> Project -> Android Project from Existing Code
Select android/ and import all project

编译后在真机运行即可

5. 参考文献

ijkplayer的github主页:https://github.com/Bilibili/ijkplayer

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

windows下用cygwin编译android版ijkplayer 的相关文章

随机推荐

  • Matlab笔记

    1 创建矩阵 gt gt a 1 2 3 4 5 8 1 2 8 1 2 8可以是1起始值 公差 结束值 也可以是1 2 7 a 1 2 3 4 5 6 7 8 1 3 5 7 1 2 特殊矩阵 名称 函数 说明 单位矩阵 eye m n
  • leetcode链表刷题:删除中间节点

    题目如下所示 这道题正如评论区所言 最大的难度就是读懂题目本身 这道题的意思是 有一个链表 题目给了我这个链表上除了第一个和最后一个节点以外的一个中间节点 然后我要把这个中间节点给删掉 也就是说 我们能够进行操作的 是一个链表上的一个节点
  • leetcode 10. 正则表达式匹配

    2023 9 20 感觉是目前做过dp题里最难的一题了 本题首要的就是需要理解题意 翻了评论区我才发现之前一直理解的题意是错的 我原来理解的 匹配0次 是指 直接消失 不会影响到前面的字符 但是 和前一个字符其实是连体的 所以说 如果匹配0
  • 网络空间安全导论

    感谢戴银涛老师的指导 笔记时间有点儿久了 整理的时候一些图丢了 不过问题不大 网络空间安全导论 目录 1 信息安全概述 从网络信息系统的发展概述 从系统分析方法看信息与信息安全的关系 从信息安全技术史角度理解网络安全相关概念 网络信息系统安
  • 深入理解 TCP 协议:从原理到实战

    小册介绍 TCP 协议是我一直很想写的一个主题 因为 TCP 学起来实在是太痛苦了 刚参加工作时 TCP 协议一直是一个心头痛 知道皮毛 但是始终无法深入 在阅读了大量相关的书籍 做了很多网络编程方面的工作以后觉得掌握的过程太过曲折 这本小
  • 【前端代码实例】使用HTML5+CSS3+JavaScript制作一个响应式的后台管理系统~带侧边导航栏仪表盘功能

    bilibili在线视频演示地址 前端代码实例 使用HTML5 CSS3 JavaScript制作一个响应式的后台管理系统 带侧边导航栏仪表盘功能 效果图 简化版代码
  • C++学习(三十四)stdlib与cstdlib

    C语言中是有 include
  • 简单xml的使用以及xml的解析dom4j和jaxp

    1 xml的简介 w3c组织发布 extensible markup Language 可扩展标记型语言 也是使用标签操作 可扩展 html里面的标签是固定 每个标签都有特定的含义 xml标签可以自己定义 可以写中文的标签 用途 显示数据
  • shared_ptr智能指针的使用

    一 shared ptr简单说明 如果一个实例指针被多个对象使用 而调用者不知道该什么时候释放该实例 那么可以使用shared ptr来 托管 这个实例指针 当使用它的对象都被释放掉了 这个实例可以自动被释放 可能有点绕 简单地说 就是类A
  • ubuntu重启后分辨率为1024,nvidia-smi不能用-20200819

    无法连接NVIDIA驱动 NVIDIA SMI has failed because it couldn t communicate with the NVIDIA driver CASE SOLVED NVIDIA SMI has fai
  • Postgresql 常用命令合集-建议收藏

    ps 注意空格和指令正确 以下仅用于自己记录使用 1 基本命令 createdb 创建一个新的PostgreSQL的数据库 命令可以使用大写 createuser 创建一个新的PostgreSQL的用户 dropdb 删除数据库 dropu
  • mssql数据库,数据库同步,分布式数据库,数据库集群,如何实现

    由于项目需要 产品的部署必须考虑到安全和灾难的解决办法 由于之前一直做的的小项目 基本都是单服务器 单数据库结构 但是由于一次灾难 把这个问题提上了日程 本人资历浅薄 很多东西还不是很熟悉 最近在网上百度了一大堆相关的东西 基本有了大概的思
  • 玩转Jetson nano系列(1):Jetson nano编译安装ncnn

    整个安装流程基本按照官方的步骤 build ncnn for jetson 但是在jetson nano上安装时 遇到了glslang和vulkan引发的问题 Found glslangValidator GLSLANGVALIDATOR
  • strptime和strftime

    strptime 将时间字符串转为 struct tm 格式 头文件 include
  • TortoiseGit日常使用指南

    本文在介绍了软件安装和设置后 写了TortoiseGit 常用的一些功能 包括 创建新库 添加文件及文件夹 创建分支 看分支情况及修改log 比较版本差异 合并分支 其他操作 Stash 忽略文件本文不包括 Git 服务器设置 Push 版
  • 预见未来:超强元AI诞生,抓住这个机会,利用AI变现也变得更加容易

    目录 一 引言 二 介绍 三 技术展现 四 元AI架构图展现 五 元AI变现技巧 商业版说明 六 后期规划 一 引言 如何利用AI变现已经成为了当今各个行业亟需解决的问题 随着人工智能技术的快速发展和普及 越来越多的企业开始将其应用于产品研
  • 微信小程序地理位置接口wx.getLocation接口申请方法技巧

    我们在开发微信小程序的时候 提交审核微信官方就会检测咱们的小程序有没有用到位置功能 涉及用到哪个位置接口 然后就会要求我们先申请相应的位置接口 审核通过后才可以发布小程序 这个接口审核一直是让大家头痛的事情 有的小伙伴申请几十次都不给过 有
  • vue防抖 自定义ref实现输入框防抖

    防抖 debounce 当持续触发事件时 一定时间段内没有再触发事件 事件处理函数才会执行一次 如果设定的时间到来之前 又一次触发了事件 就重新开始计时 接下来我将带大家一步步分析如何把input防抖做到极致 首先需要把input 的双向绑
  • Web前端开发实训案例教程(初级)素材

    素材下载地址 Web前端开发实训案例教程 初级 素材 内容简介 本书是按照 Web前端开发职业技能等级标准 编写的配套实践教程 其中涉及的应用技术专题和项目代码均在主流浏览器中运行通过 本书结合大学计算机相关专业Web前端开发方向课程体系
  • windows下用cygwin编译android版ijkplayer

    1 环境搭建 1 1 安装cygwin 并安装git make ysam 具体安装过程网上有很多资料 不再详述 1 2 android sdk和android ndk下载和安装 参见网上资料 1 3 下载ijkplayer源码 git cl