09.阿里云服务器(Ubantu系统)配置ndk 编译ffmpeg

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: (创建于2018/1/4)ffmpeg完整的编译过程1.ls 显示所有目录文件2.mkdir root 创建文件夹root //将Android文件夹下的所有强制删除 rm -rf android 3.

(创建于2018/1/4)

ffmpeg完整的编译过程
1.ls
 显示所有目录文件

2.mkdir root
 创建文件夹root
 
 //将Android文件夹下的所有强制删除
 rm -rf android  
 
3.touch ren.txt
 创建文件ren.txt

4.apt-get update         //Advanced Package Tool,是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统,定期运行这一命令以确保您的软件包列表是最新的
更新

5.sudo apt-get install vim-gtk  //vim:文本编辑器
安装vim

6.:q! 强制退出
在INSERT状态下(编辑模式),先按esc(进入命令模式) 然后输入:q! 回车,例如:vim ren.txt  然后:q!退出,没有进行保存

7.保存退出
vim ren.txt 然后按i进入编辑模式,写一段文字,按Esc进入命令模式
按Shift z z保存退出,写入的内容被保存

8.vim命令打开vim配置文件
vim /etc/vim/vimrc

9.在配置文件状态下(8操作之后的状态)
对vim进行配置,按i进入编辑模式
输入
set nu   显示行号
set tabstop  
set ruler  在右下角显示光标位置
set cursorline 设置高亮显示当前行
按Esc进入命令模式,然后按Shift zz保存设置退出 

10.命令模式下进行删除
按x键删除单个,dd键删除行

在操作之前将ndk和ffmpeg上传到阿里云服务器指定目录,我这里是根目录的user目录下存放ndk,在跟ndk同级目录创建renzhenming文件夹,在renzhenming中存放ffmpeg

11.设置权限
chmod 777 -R ndk  //设置ndk目录下的所有东西最高操作权限,这样,原本不可执行的ndk文件编程绿色的,可以执行

12.解压ndk文件
ndk已经成为了可执行文件,所以我们接下来可以执行解压,输入命令
./android-ndk-r10e-linux-x86_64.bin
这里有一个小技巧,输入androi之后后边比较长,我不想一个一个的输入,这个时候按tab键会自动补全,也就是所谓的联想功能(linux下)

13.配置ndk环境变量
vim ~/.bashrc   //就相当于进入一个文件, ~大概就表示用户根目录

然后在编辑模式下滑倒最低端,加入这两行配置

export NDKROOT=/user/ndk/android-ndk-r10e
export PATH=$NDKROOT:$PATH 

保存退出,更新环境变量
source ~/.bashrc

14.解压ffmpeg
需要安装zip,输入命令

sudo apt-get install zip

安装成功后使用zip解压ffmpeg,

unzip ffmpeg-2.6.9(ffmpeg是zip压缩文件,ndk是bin文件,所以解压方式不同)

15.编译ffmpeg
shell脚本文件(已经写好),将这个文件上传到ffmpeg根目录下
在Windows下编写的脚本文件,直接上传到服务器上执行,有可能会报文件找不到的问题,这就需要用到一个命令
dos2unix +文件名
如果dos2unix不存在需要先安装,执行命令
apt-get install dos2unix
然后使用dos2unix进行格式转换


处理这种格式问题有两种方法
a:在云服务器上创建脚本文件,然后传输到windows上,将脚本内容拷贝进去再上传到服务器进行覆盖,然后通过dos2unix转换格式在执行就可以了

    在ffmpeg根目录下:touch build_android.sh 创建文件,双击传输到桌面,打开复制原本的脚本内容到这个文件中,保存为utf-8无bom格式,然后上传到ffmpeg根目录进行覆盖,执行./bulid_android.sh提示文件不存在,这时候执行命令 dos2unix build_android.sh 进行格式转换,然后再执行./bulid_android.sh,这时候仍然可能无法编译,看看报错提示中有没有一个关于permission的问题,说config permission denied,这说明,这个config文件不是可执行文件,需要赋予权限,退到上一级目录,执行chmod 777 -R ffmpeg..xx 设置ffmpeg文件夹中所有文件可执行的权限,这时候再次执行脚本 ./build_android.sh就可以开始正常编译了

b:

编译ffmpeg的步骤:
1)编写shell脚本
2)给文件设置权限:chmod 7777 build_android.sh
   给ffmpeg下所有文件设置权限chmod 777 -R ffmpeg..xx
dos2unix build_android.sh
4).执行ffmpeg文件夹中的configure脚本
./configure --disable-yasm  (执行./configure,如果提示让去掉yasm,再加上后边的)
3)执行脚本  ./build_android.sh

16.修改存在的问题
编译完成后会在ffmpeg根目录生成一个android文件夹,这里边就是生成的一系列的so文件和c文件,但是
这样直接编译出来的so文件是有问题的,我们打开lib可以看到如图1,每一个so文件后边都在.so之后还有一些数字,这样的文件Android是无法识别的,所以我们需要编译成数字在前,.so在最后的形式,这时需要修改configure文件中的配置,将下边注释的四行代码修改为新的四行,注:从configure 2779行开始,重新编译后,生成的so如图2

#SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
#LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
#SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
#SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'

#renzhenming edit in 1.6.2018
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'

build_android.sh脚本:

#!/bin/bash
make clean
export NDK=/user/ndk/android-ndk-r10e
export SYSROOT=$NDK/platforms/android-9/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
export CPU=arm
export PREFIX=$(pwd)/android/$CPU
export ADDI_CFLAGS="-marm"

./configure --target-os=linux \
--prefix=$PREFIX --arch=arm \
--disable-doc \
--enable-shared \
--disable-static \
--disable-yasm \
--disable-symver \
--enable-gpl \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install

修改后的configure文件:


img_f7d1798560c9df237789c7d63015dfa3.png
4399046.png
img_48f99aaf71daa677800eaffcfd6129bc.png
3130062.png
                                                            图1
img_185d102704295d02927c202ae285d319.png
4110281.png
                                                             图2

至此,编译成功!

相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8天前
|
存储 弹性计算 固态存储
阿里云服务器CPU内存配置详细指南,如何选择合适云服务器配置?
阿里云服务器配置选择涉及CPU、内存、公网带宽和磁盘。个人开发者或中小企业推荐使用轻量应用服务器或ECS经济型e实例,如2核2G3M配置,适合低流量网站。企业用户则应选择企业级独享型ECS,如通用算力型u1、计算型c7或通用型g7,至少2核4G配置,公网带宽建议5M,系统盘可选SSD或ESSD云盘。选择时考虑实际应用需求和性能稳定性。
109 6
|
2天前
|
Ubuntu Linux Shell
Android-NDK-clang 编译 FFmpeg
Android-NDK-clang 编译 FFmpeg
11 0
|
2天前
|
Linux
Linux编译FFmpeg
Linux编译FFmpeg
9 0
|
2天前
|
移动开发 Unix Linux
ffmpeg编译so
ffmpeg编译so
9 0
|
3天前
|
Web App开发 安全 Unix
Linux 配置FTP服务器 + vsftpd服务安装配置 (Good篇)
Linux 配置FTP服务器 + vsftpd服务安装配置 (Good篇)
|
3天前
|
存储 弹性计算 固态存储
阿里云服务器租用价格参考,2核16G、4核32G、8核64G配置收费标准
阿里云服务器2核16G、4核32G、8核64G配置最新租用价格更新,2024年阿里云产品再一次降价,降价之后2核16G配置按量收费最低收费标准为0.596元/小时,按月租用标准收费标准为260.44元/1个月。4核32G配置的阿里云服务器按量收费标准最低为1.085元/小时,按月租用标准收费标准为520.88元/1个月。8核64G配置的阿里云服务器按量收费标准最低为2.17元/小时,按月租用标准收费标准为1041.77元/1个月。云服务器实例规格的地域和实例规格不同,收费标准不一样,下面是2024年阿里云服务器2核16G、4核32G、8核64G配置的最新租用收费标准。
阿里云服务器租用价格参考,2核16G、4核32G、8核64G配置收费标准
|
3天前
|
PyTorch TensorFlow 算法框架/工具
【科研入门】搭建与配置云服务器的论文环境
本文介绍了如何搭建云服务器并配置论文代码环境,以AutoDL平台为例。首先,租用服务器并选择符合代码需求的镜像版本,如Python 3.7、TensorFlow 1.15和PyTorch。接着,启动服务器进入终端,克隆项目代码并使用Conda创建隔离的环境安装所需包。如果需在Pycharm中工作,还需在Pycharm内创建相同环境。最后,根据项目配置安装Tensorflow和PyTorch,遇到缺失包时通过`pip install`补充。完成配置后,可克隆服务器以备后续使用。遇到版本不兼容问题,可调整Conda环境的Python版本。
16 1
【科研入门】搭建与配置云服务器的论文环境
|
3天前
|
存储 弹性计算 固态存储
阿里云服务器配置选择指南,2024年全解析
阿里云服务器配置选择涉及CPU、内存、带宽和磁盘。个人开发者或中小企业推荐使用轻量应用服务器或ECS经济型实例,如2核2G3M配置,适合网站和轻量应用。企业用户则应选择企业级独享型ECS,如计算型c7、通用型g7,至少2核4G起,带宽建议5M,系统盘考虑SSD云盘或ESSD云盘以保证性能。阿里云提供了多种实例类型和配置,用户需根据实际需求进行选择。
|
8天前
|
存储 弹性计算 固态存储
阿里云服务器配置怎么选择合适?收藏级教程大家参考下
阿里云服务器配置选择涉及CPU、内存、带宽和磁盘。个人开发者或中小企业推荐使用轻量应用服务器或ECS经济型实例,如2核2G3M配置,适合低流量网站。企业用户应选择企业级独享型ECS,如通用算力型u1、计算型c7或通用型g7,至少2核4G配置,公网带宽建议5M,系统盘可选SSD或ESSD云盘。具体配置需根据实际应用需求来定。
|
10天前
|
域名解析 弹性计算 Linux
阿里云购买云服务器、注册域名、备案及绑定图文教程参考
本文为大家介绍了2024年购买阿里云服务器和注册域名,绑定以及备案的教程,适合需要在阿里云购买云服务器、注册域名并备案的用户参考,新手用户可通过此文您了解在从购买云服务器到完成备案的流程。
阿里云购买云服务器、注册域名、备案及绑定图文教程参考