09.阿里云服务器(Ubantu系统)配置ndk 编译ffmpeg-阿里云开发者社区

开发者社区> 黑夜路口> 正文

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

简介: (创建于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

至此,编译成功!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
[教程]在CentOS7上配置 FTP服务器 Proftpd 支持 MySQL 虚拟用户加密认证以及磁盘限额(Quota)
本文软件采用 yum 安装,不需要编译,而且随时都可以跟随 CentOS 升级 Proftpd 到最新版本,以避免可能的漏洞攻击。利用 Proftpd 现成的配置以及设置好的各种模块,可以实现 sftp 和 ssh 的结合,完美的实现虚拟用户加密密码存放于数据库。
3873 0
09.阿里云服务器(Ubantu系统)配置ndk 编译ffmpeg
(创建于2018/1/4) ffmpeg完整的编译过程 1.ls 显示所有目录文件 2.mkdir root 创建文件夹root //将Android文件夹下的所有强制删除 rm -rf android 3.
885 0
6 cocos2dx粒子效果,类图关系,系统原生粒子和自定义粒子效果,粒子编译器软件,爆炸粒子效果,烟花效果,火焰效果,流星效果,漩涡粒子效果,雪花效果,烟雾效果,太阳效果,下雨效果
 1 粒子 示例 2 类图关系 3 系统原生粒子 CCParticleSystem 所有粒子系统的父类 CCParticleSystemPoint、 CCParticleSystemQuad 点粒子和方形粒子系统,都继承了CCParti
1266 0
Tomcat服务器安装配置——Windows系统
1、首先去Apache官网下载Tomcat 2、Tomcat是一个绿色的软件,所以,直接解压到你想要存放的文件中就可以,我就直接放在c盘的根目录了 3、配置Tomcat环境 【我的电脑】-【属性】-【高级系统设置】-【环境变量】 在系统变量里面新建 变量名:CATALINA_HOME 变量值:C:\apache-tomcat-7.
1258 0
mysql 系统用户最大文件打开数限制
mysql 系统用户最大文件打开数限制 纸上得来终觉浅,绝知此事多宕机...记录一下自己很蠢的一次故障处理过程。   上周的时候,一个刚上线的系统又开始反映登不上了,因为最近这个系统也老是出现这个问题,开发也一直在找问题中,所以也没太在意。
972 0
基于ffmpeg的流媒体服务器
OS:ubuntu 12.04ffmpeg:N-47141-g4063bb2x264:0.133.2334 a3ac64b目标:使用ffserver建立流媒体服务器使用ffmpeg对本地文件流化(x264编码器)使用ffplay播放 目录 [hide] 1 ffserver.
1405 0
+关注
黑夜路口
安卓高级工程师,目前任职于Wifi万能钥匙
152
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载