Ubuntu 18.04 编译 ijkplayer
Ubuntu 18.04 编译 ijkplayer 1. 配置安装源
https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu
2. 配置好安装源后,安装一些组件
$ sudo apt update
$ sudo apt install vim openssh-server git curl wget tar unzip
$ sudo apt install build-essential openjdk-8-jdk yasm python
3. 下载sdk-manager
https://developer.android.com
$ wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
如果在Windows,可通过putty的psftp复制sdk-tools-linux-3859397.zip到linux系统
4. 解压sdk-manager
$ unzip ~/sdk-tools-linux-3859397.zip -d ~/android-sdk
5. 更新tools
$ touch ~/.android/repositories.cfg // 可忽略
$ ./sdkmanager --update
提示许可协议,输入y回车,然后耐心等待,提示done表示完成。
6. 查看可安装列表
$ cd ~/android-sdk/tools/bin
$ ./sdkmanager --list
记住最新的sdk build tools
7. 安装sdk build-tools和ndk
$ cd ~/android-sdk/tools/bin
$ ./sdkmanager "build-tools;27.0.3" // "ndk-bundle"
下载14版本的NDK
$ cd ~
$ wget https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip
$ unzip android-ndk-r14b-linux-x86_64.zip -d ~/android-sdk
8. 删除无用的压缩包,备份android-sdk目录
$ cd ~
$ rm ~/sdk-tools-linux-3859397.zip ~/android-ndk-r14b-linux-x86_64.zip
$ tar cvzf android-sdk-ndkr14b.tar.gz android-sdk 编译ijkplayer项目
一、准备源码
https://github.com/Bilibili/ijkplayer#build-android
1. 配置环境变量
$ export ANDROID_SDK=$HOME/android-sdk
// $ export ANDROID_NDK=$ANDROID_SDK/ndk-bundle //此项目最高支持NDK14的版本,因此用下面的位置。
$ export ANDROID_NDK=$ANDROID_SDK/android-ndk-r14b
2. 下载ijkplayer源代码
$ cd ~
$ git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
$ cd ijkplayer-android
$ git checkout -B latest k0.8.8
3. 下载相关的android ffmpeg源代码
$ ./init-android.sh
4. 备份源码
$ cd ~
$ tar cvzf ijkplayer-android.tar.gz ijkplayer-android
二、编译
1. 用bash代替dash
$ sudo dpkg-reconfigure dash
选择NO
如果新打开的shell,记得按“一1”配置ANDROID_SDK和ANDROID_NDK环境变量。
2. 选择解码包
(1)默认是较少的codec/format生成较小尺寸的包。
(2)在(1)的基础上包含hevc功能
(3)最多的codec/format
如果选择(1)请直接到下一步。否则继续操作:
$ cd ~/ijkplayer-android/config
$ rm module.sh
$ ln -s module-lite-hevc.sh module.sh <<<< (2)
$ ln -s module-default.sh module.sh <<<< (3)
注意,选择(2)需要为ffmpeg额外安装latm,选择(3)可能需要手动安装更多的外部库。
3. 编译ffmepg
$ cd ~/ijkplayer-android/android/contrib
$ ./compile-ffmpeg.sh clean
$ ./compile-ffmpeg.sh all
成功进行下一步。
如果报错:fatal error: linux/perf_event.h: No such file or directory
$ vim ~/ijkplayer-android/config/module.sh
在结尾加入这一行:
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-linux-perf"
保存后执行
$ ./compile-ffmpeg.sh clean
$ ./compile-ffmpeg.sh all
4. 编译ijkplayer
$ cd ~/ijkplayer-android/android
$ ./compile-ijk.sh all
5. 备份成果
$ cd ~
$ tar cvzf ijkplayer-android-build.tar.gz ijkplayer-android
三、使用
# Android Studio:
# Open an existing Android Studio project
# Select android/ijkplayer/ and import
#
# define ext block in your root build.gradle
# ext {
# compileSdkVersion = 23 // depending on your sdk version
# buildToolsVersion = "23.0.0" // depending on your build tools version
#
# targetSdkVersion = 23 // depending on your sdk version
# }
#
# If you want to enable debugging ijkplayer(native modules) on Android Studio 2.2+: (experimental)
# sh android/patch-debugging-with-lldb.sh armv7a
# Install Android Studio 2.2(+)
# Preference -> Android SDK -> SDK Tools
# Select (LLDB, NDK, Android SDK Build-tools,Cmake) and install
# Open an existing Android Studio project
# Select android/ijkplayer
# Sync Project with Gradle Files
# Run -> Edit Configurations -> Debugger -> Symbol Directories
# Add "ijkplayer-armv7a/.externalNativeBuild/ndkBuild/release/obj/local/armeabi-v7a" to Symbol Directories
# Run -> Debug 'ijkplayer-example'
# if you want to reverse patches:
# sh patch-debugging-with-lldb.sh reverse armv7a
#
# Eclipse: (obselete)
# File -> New -> Project -> Android Project from Existing Code
# Select android/ and import all project
# Import appcompat-v7
# Import preference-v7
#
# Gradle
# cd ijkplayer
# gradle
Ubuntu 18.04 编译 ijkplayer的更多相关文章
- Ubuntu 18.04编译AOSP源码
总结一下我从Ubuntu 18.04下编译成功AOSP的过程,以及遇到的坑 我的电脑配置: OS: Ubuntu 18.04 bionic Kernel: x86_64 Linux 4.18.0-17 ...
- ubuntu 18.04编译opencv3.4.3 with python3.6 cuda9.2 gdal
惭愧,之前一直没在linux下编译过opencv,也没用过纯命令行版的cmake,现在咬牙编译一次.其实感觉还凑合. opencv官网文档还是那么烂:https://docs.opencv.org/m ...
- [笔记] Ubuntu 18.04源码编译安装OpenCV 4.0流程
标准常规安装方法安装的OpenCV版本比较低,想尝鲜使用4.0版本,只好源码安装. 安装环境 OS:Ubuntu 18.04 64 bit 显卡:NVidia GTX 1080 CUDA:10.0 c ...
- ubuntu 18.04下编译最新版本的KMS
KMS:kurento媒体服务,即 kurento media server 很庞大的一个WEBRTC项目,GIT库主项目:https://github.com/Kurento 基础实现,修改了gst ...
- Ubuntu 18.04 手动编译安装 ffmpeg
ffmpeg 是一个由提供对视频.音频和其他多媒体流文件进行处理功能的库和程序构成的自由软件项目,其常被用于适用于不同格式的音频和视频的录影.转换和流处理等场合.这里记录在 Ubuntu 18.04 ...
- 加密通信软件Signal 2.92版本编译安装折腾手记(Ubuntu 18.04)
加密通信软件Signal 2.92版本编译安装折腾手记(Ubuntu 18.04) 前言 加密通信软件Signal是开源的,安全性很高,号称斯诺登也推荐大家使用.既然这么好,那必然会有不少人去尝试复制 ...
- Ubuntu 18.04 WMware 编译 AOSP android-7.1.2_r33 笔记
0 前言 问:都快2022年了,为什么还要编译 android 7.1.2 ? 答:某脱壳机特征修改或移植到其他机型(此处省略1000字...) 笔者在编译之前并没有加入专有二进制文件(后续加入了再补 ...
- Ubuntu 18.04 安装部署Net Core、Nginx全过程
Ubuntu 18.04 安装部署Net Core.Nginx全过程 环境配置 Ubuntu 18.04 ,Nginx,.Net Core 2.1, Let's Encrypt 更新系统 sudo a ...
- 记录在Ubuntu 18.04系统中安装Apache, MySQL和PHP环境
虽然我们在Linux VPS.服务器安装WEB环境比较方便,可以选择面板或者一键包,但是有些我们需要深入学习的网友不会选择一键安装,而是会尝试编译安装.这样可以学到一些内在的技术.一般我们较为习惯选择 ...
随机推荐
- Qt 打印机支持模块
Qt 打印支持 Qt为打印提供广泛的跨平台支持.使用每个平台上的打印系统,Qt应用程序可以打印到连接的打印机,并通过网络打印到远程打印机.Qt的打印系统还支持PDF文件生成,为基本的报告生成设施奠定了 ...
- C++ 常见字符处理 收录
1.string字符串删除 字符串中 指定字符 std::string& HTTPRequestHandlerImpl::replace_all_distinct(std::string&am ...
- Android---55---Web Service概述
Web Service 是什么? /*w3school*/ Web Services 是应用程序组件 Web Services 使用开放协议进行通信 Web Services 是独立的(self-co ...
- 17届计算机应届生秋季校招分享 to Tomorrow
首先自我介绍一下,本人来自普通二本院校,计算机科学与技术专业,在校有一到两年asp.net项目经验,花了两个星期左右的时间转向java.现将此次的求职经历,分为三阶段,分享给大家. First Sta ...
- C++中的默认成员函数
一般而言,对于一个用户自定义的类类型,以下四个函数在用户没有自定义的情形下,会由编译器自动生成: 1.default constructor 2.copy constructor Someclass: ...
- MAC 终端颜色设置
在bash中,可以通过更改PS1环境变量的值来设置提示行.通常的提示符颜色单调,用户可以通过在PS1中添加颜色代码序列来设置提示符中不同信息以不同颜色显示. 添加颜色相当容易:第一步是设计不带颜色的提 ...
- 199. Binary Tree Right Side View -----层序遍历
Given a binary tree, imagine yourself standing on the right side of it, return the values of the nod ...
- NoSQL2
系统的可扩展性是推动NoSQL运动发展的的主要理由,包含了分布式系统协调,故障转移,资源管理和许多其他特性.这么讲使得NoSQL听起来像是一个大筐,什么都能塞进去.尽管NoSQL运动并没有给分布式数据 ...
- 大数据生态,哪些框架需要全部启动,哪些只启动master,仅为汇总
主从,只需要在master节点启动 hadoop hbase 单机启动 hive 其他,需要启动每个节点 zookeeper kafka flume presto
- js 科学计数法
function convertNum(num_str){ //参数必须为 字符串 //科学计数法字符 转换 为数字字符, 突破正数21位和负数7位的Number自动转换 // 兼容 小数点左边有多位 ...