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

本文涉及的产品
云服务器 ECS,每月免费额度280元 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
相关文章
|
22小时前
|
监控 关系型数据库 Linux
|
1天前
|
弹性计算 安全 Linux
阿里云ECS Linux系统漏洞修复详细教程
阿里云ECS Linux系统漏洞修复详细教程
|
1天前
|
弹性计算 异构计算 大数据
阿里云服务器2核4G配置多少钱?2024年阿里云服务器租用费用配置价格表来了!
2024年阿里云服务器租用价格表更新,云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、ECS u1实例2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年,轻量应用服务器2核2G3M带宽轻量服务器一年61元、2核4G4M带宽轻量服务器一年165元12个月、2核4G服务器30元3个月,幻兽帕鲁4核16G和8核32G服务器配置,云服务器ECS可以选择经济型e实例、通用算力u1实例、ECS计算型c7、通用型g7、c8i、g8i等企业级实例规格。今天分享阿里云服务器租用费用最新报价:
阿里云服务器2核4G配置多少钱?2024年阿里云服务器租用费用配置价格表来了!
|
2天前
|
弹性计算 数据中心
阿里云香港服务器多少钱?阿里云香港服务器介绍及价格配置介绍
阿里云香港服务器中国香港数据中心网络线路类型BGP多线精品,中国电信CN2高速网络高质量、大规格BGP带宽,运营商精品公网直连中国内地,时延更低,优化海外回中国内地流量的公网线路,可以提高国际业务访问质量。阿里云百科来详细介绍阿里云香港云服务器:
|
2天前
|
定位技术 数据安全/隐私保护
幻兽帕鲁服务器参数配置指南&参数解读&参数推荐
幻兽帕鲁服务器支持非常多的参数配置,本文带来了详细的参数解读、配置教程,以及亲身体验后的参数搭配,大幅增加你的游戏体验!
|
2天前
|
数据安全/隐私保护
2012及其以上系统修改服务器密码指南
2012及其以上系统修改服务器密码指南
|
5天前
|
弹性计算
ECS续费问题之变更实例配置失败如何解决
ECS续费是指对已创建的阿里云ECS实例执行的续费操作,以延长其服务期限;本合集旨在为用户提供ECS续费的操作步骤、策略选择和注意事项,确保业务的持续性和成本的优化。
|
5天前
|
弹性计算 开发框架 负载均衡
ECS配置问题之无法访问网址如何解决
ECS配置指的是对阿里云Elastic Compute Service(弹性计算服务)实例的硬件和软件资源进行设置的过程;本合集将详述如何选择合适的ECS配置、调整资源配比以及优化实例性能,以满足不同应用场景的需求。
|
5天前
|
存储 弹性计算 负载均衡
ECS配置问题之配置OPENVPN报错如何解决
ECS配置指的是对阿里云Elastic Compute Service(弹性计算服务)实例的硬件和软件资源进行设置的过程;本合集将详述如何选择合适的ECS配置、调整资源配比以及优化实例性能,以满足不同应用场景的需求。
|
1天前
|
弹性计算 大数据 测试技术
2024阿里云服务器租用价格表(CPU/内存/带宽/磁盘收费标准)
阿里云服务器分为轻量应用服务器和云服务器ECS,轻量适合个人开发者使用,搭建轻量级的网站、测试环境使用;专业级如大数据、科学计算、高并发网站等需要使用云服务器ECS。2024年阿里云服务器租用价格表出炉!云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、ECS u1实例2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年,轻量应用服务器2核2G3M带宽轻量服务器一年61元、2核4G4M带宽轻量服务器一年165元12个月、2核4G服务器30元3个月,幻兽帕鲁4核16G和8核32G服务器配置,云服务器ECS可以选择经济型e实例、通用算力u1实例、ECS计算型c7、通

热门文章

最新文章

相关产品

  • 云迁移中心