FFmpeg是什么
1,FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。
2,FFmpeg 是一个多媒体视频处理工具,有非常强大的功能包括视频采集功能、
视频格式转换、视频抓图、给视频加水印等。
FFmpeg 是由C代码编写而成且代码量大,编译必须在Linux环境下
Android开发用到的库:
libavcodec :音频和视频的编解码器
libavfilter:多媒体过滤器
libavformat
libavutil
libswresample:高度优化音视频重采样工具
libswscale:执行高度优化图像缩放和色彩空间,像素的转换操作
编译第一步:
下载ndk,直接百度进行下载,最好不要用最新版,用r17版本
用 wget https://dl.google.com/android/repository/android-ndk-r17c-linux-x86_64.zip 下载如下图
下载完成用 ls 命令查看会多一个文件
然后用解压命令解压出来: unzip android-ndk-r17c-linux-x86_64.zip
这样就得到了NDK环境
然后配置Linux环境变量,打开配置界面命名:vim /etc/profile,在最末尾添加2句号,保存退出
执行命令:source /etc/profile 使刚才的配置生效
执行命令:ndk-build 出现如下界面说明配置好了
第二步下载FFmpeg 命令:http://ffmpeg.org/releases/ffmpeg-4.0.4.tar.bz2,想要哪个版本自行修改
解压FFmpeg 执行2跳命令: bunzip2 ffmpeg-4.0.4.tar.bz2 tar -xvf ffmpeg-4.0.4.tar
然后进入ffmpeg-4.0.4目录
创建新的文件:build.sh 命令:vim build.sh
#--prefix : 安装目录
#--enable-small : 优化大小
#--disable-programs : 不编译ffmpeg程序(命令行工具),我们是需要获得静态(动态)库。
#--disable-avdevice : 关闭avdevice模块,此模块在android中无用
#--disable-encoders : 关闭所有编码器 (播放不需要编码)(如果是做视频编辑必须打开)
#--disable-muxers : 关闭所有复用器(封装器),不需要生成mp4这样的文件,所以关闭
#--disable-filters :关闭视频滤镜(如果是做视频编辑必须打开 类似抖音效果)
#--enable-cross-compile : 开启交叉编译(ffmpeg比较**跨平台**,并不是所有库都有这么happy的选项 )
#--cross-prefix: 看右边的值应该就知道是干嘛的,gcc的前缀 xxx/xxx/xxx-gcc 则给xxx/xxx/xxx-
#disable-shared enable-static 不写也可以,默认就是这样的。
#--sysroot:
#--extra-cflags: 会传给gcc的参数
FFmpeg 参数太多,就不一一列举了
执行命令:sh build.sh(10分钟左右)
完成编译如下图