封装
从文件中,把音视频读出来
解码
解压出来,之后,视频需要显示,需要转换成显卡支持的格式,音频需要播放,转换成声卡支持的格式
像素格式 :视频需要转换像素格式
MPEG-4 :用于音频,视频信息的压缩编码标准
MPEG-4 Part 14 MPEG-4文件格式Part15 AVC文件格式
H264(AVC Part10)
常用的封装格式
AVI 压缩标准可任意选择 (现在都转成mp3或mov格式了)
FLV ts(电视直播,也适应做点播) 流媒体格式
ASF 微软 点播
视频
H264(AVC Part10),wmv,XviD(Part2),mjpeg(没有上下文依赖,每一帧都是独立的,坏处是压缩率低,同样大小的视频,比H264压缩差很多)
音频
(有损压缩)acc MP3
(无损压缩,效果好)ape flac
7.开发环境的准备
AS sdk NDK gradle cmake
8.SDK目录及内容分析
platform-tools :该文件夹下放了Android平台的相关工具比如adb.exe、sqlite3.exe
platform:不同版本的SDK
ndk-bundle:交叉编译的工具,后面编译ffmpeg
tools:Android开发、调试的工具性能监控
10.NDK
platforms 系统依赖库
toolchains交叉编译工具 gcc Id
12.安卓NDK相关概念ABI、NEON、JNI和CMAKE分析
https://developer.android.google.cn/ndk/downloads/ 然后安装到Ubutu里面
1.ndk-build 脚本用于在NDK中心启动构建脚本
2.
3.生成二进制文件
4.现在新版本统一使用Cmake
Java原生接口(JNI)
1.Java和C++组件用以互相沟通的接口
2.
3.
4.原生共享库:NDK从原生源代码构建这些库或.so文件
5.原生静态库:NDK也可构建静态库或.a文件,您可以关联到其他库
13.NDK中CPU的应用二进制界面ABI
(1)不同Android手机使用不同的CPU,因此支持不同的指令集
(2)CPU与指令集的每种组合都有其自己的应用ABI
ABI包含信息
(1)CPU指令集
(2)内存字节顺序。
(3)可执行二进制文件的格式
(4)解析的各种约定。对齐限制,堆栈使用和调用函数
(5)库集
支持的ABI https://developer.android.google.cn/ndk/guides/abis?hl=zh_cn
NEON
(1)NEON提供一组标量/矢量指令和寄存器(与FPU共享)armeabi默认
(2)
(3)
(4)
(5)
14.Ubuntu虚拟机及常用工具安装并配置samba共享目录
使用NDK编译ffmpeg安卓库编译
ubuntu NDK neon、硬解码
安装Ubuntu在VMware虚拟机上 https://blog.csdn.net/qq_40950957/article/details/80467513
直接使用XShell6连接阿里云
apt-get: command not found,这个的出现是因为系统的原因。
Linux系统分为两种:
1.RedHat系列:Redhat、Centos、Fedora等
2.Debian系列:Debian、Ubuntu等
RedHat系列的包管理工具是yum
Debian系列的包管理工具是apt-get
更新数据源(重新去下载一下数据库的列表)
yum install openssh-server
安装编辑工具
下载 ndk 连接:https://developer.android.google.cn/ndk/downloads/ 直接下载速度有10多M/s
安装samba共享工具
vim /etc/samba/smb.conf
添加 [root]
comment = root
path = /root
browseable = yes
read only = no
按i 就进入插入模式,按esc就进入命令模式: 就输入命令操作的,按h是帮助文件,所以按esc退出后输入:wq保存编辑
输入权限,和重启
15.ffmpeg源码下载在Android下的编译参数分析讲解
wget http://ffmpeg.org/releases/ffmpeg-3.4.tar.bz2
解压编译
tar -xvf ffmpeg-3.4.tar.bz2 (按tab键可以迅速补充)
yum install make 安装打包工具
./configure 做精简,生成make文件
make -j16 (读取)集成命令,把编译执行好(16为多线程)
make install 设置出一个输出路径,头文件,库,文档都复制到安装路径当中去(把生成文件发布出去)
configure
--prefix 输出目录
--enable 开启模块,硬解码,neon
--disable 禁止模块,禁止ffmpeg工具,加快编译速度
交叉编译参数 cross-prefix arch target cpu
sysroot extra-cflags