ffmpeglinux编译
下面的一切都是在 root 模式下进行的,可以不再 root 模式下进行
基础环境就是编译代码的基础库,Ubuntu联网安装软件很简单,一个语句即可搞定,这里列出语句如下:
依赖库分两方面,参考以下网站列出的依赖库信息,本文选择的版本均参考于此网页: FFmpeg依赖库信息
首先创建 FFmpeg 代码目录,所有的源代码放在这个目录下
FFmpeg 编译之后,即可使用。编译生成的可执行程序在 ~/bin 目录下
注:上面的 ./configure 配置编译后并不能进行调试,需要如下配置.
刚才的工程可以运行,但不能debug。解决此问题,首先认定一点,生成的可执行程序中,ffmpeg 不包含调试信息,调试信息在 ffmpeg_g 中,debug 要选择 ffmpeg_g。
另外,./config选项也是确定包含调试信息的核心,需要在config中添加:
采用以下命令重新config:
一些注意事项; 在使用 ffplay 播放生成 h264 格式的视频时,播放速度会加快,解决方式:不要使用 FFmpeg 转码生成纯 h264 格式的视频,要使用一种容器包含 h264 视频,即生成一种音视频流格式,也就是不要生成纯粹的 h264 码流,而是生成诸如 mkv 等格式的文件。
② Linux 交叉编译FFmpeg库
Linux 交叉编译FFmpeg库
配置环境
在Linux上配置NDK环境和FFmpeg,首先下载并解压NDK,配置/etc/profile的环境变量,然后下载FFmpeg,解压后使用./configure --help查看帮助文档。
FFmpeg包含libavformat、libavcodec、libavutil、libswscale、libpostproc等模块,为各种音视频封装格式的生成和解析、声音/图像编解码、公共工具函数、视频场景比例缩放和色彩映射转换、后期效果处理以及工具和服务器等。
编写编译脚本
定义NDK路径,指定GCC路径,设置FLAGS结合Linux环境修改,参考externalNativeBuild/xxx/build.ninja的传参内容。学习资料推荐,免费报名学习音视频知识,资料包括C/C++、Linux、FFmpeg等。
配置参数
优化大小、不编译ffmpeg程序(命令行工具)、关闭avdevice模块、关闭所有编码器、关闭所有复用器、关闭所有滤镜、开启交叉编译、设置GCC的前缀、关闭动态库、开启静态库、传给gcc的参数等。
执行make完成编译输出
编写脚本过程中注意关闭asm、权限要求、手动创建输出文件夹、命令行格式等。
移植到Android项目中使用
创建NDK项目,将编译好的include文件夹复制到/src/main/cpp目录下,将ffmpeg lib目录下的文件复制到armeabi-v7a目录下,Cmake文件中引入库,即可愉快使用FFmpeg库。
FFmpeg是纯C的库,需要在代码中进行引用。显示ffmpeg版本号完成整个流程。
至此,Linux交叉编译FFmpeg库的流程介绍完成。
③ linux下编译ffmpeg时关于configure的问题.
你准备工作没做好吧!!
先编译安装Yasm。
然后编译安装H.264 (也就是x264)。
再编译安装AAC audio encoder (fdk-aac)。
编译安装libmp3lame (MP3 audio encoder)。
编译安装libopus (Opus audio decoder and encoder)。
编译安装libvpx (VP8/VP9 video encoder and decoder)。
做后编译安装ffmpeg。
其中1-6你可以选择编译安装,也可以使用源直接安装。安装后了再编译安装ffmpeg
你使用 sudo ldconfig -p |grep libx264 看看你的libx264是否正确安装.
你编译安装x264的时候可以使用2中方式都安装。
先
cd ../x264
./configure --enable-shared
make
make install
最后
cd ../x264
make distclean
./configure --enable-static
make
make install
④ FFmpeg开发笔记(八)Linux交叉编译Android的FFmpeg库
在Linux环境中进行FFmpeg库的Android交叉编译,首先需要下载Linux版本的android-ndk-r21e。登录Linux服务器,例如华为云的欧拉系统,执行以下步骤:
1. 进入`/usr/local/src`目录:
cd /usr/local/src
2. 下载并解压ndk:
curl -O dl.google.com/android/r...
unzip android-ndk-r21e-linux-x86_64.zip
接下来,你需要将FFmpeg及相关库(如x264、freetype、lame)的源码上传到服务器,并进行必要的修改:
- 解压源码,替换`SYSTEM=windows-x86_64`为`SYSTEM=linux-x86_64`,并确保sh文件无回车符。
- 修改`config_x264.sh`、`config_freetype.sh`等文件,赋予可执行权限:
chmod +x config_*.sh
3. 编译x264库,修改configure文件并执行编译:
修改configure文件
./config_x264.sh
make -j4
make install
4. 对其他第三方库进行类似操作:
./config_xxx.sh
make -j4
make install
5. 配置环境变量`PKG_CONFIG_PATH`:
在.bash_profile中添加环境变量
source .bash_profile
6. 最后,编译FFmpeg库:
./config_ffmpeg_full.sh
make -j4
make install
完成后,可以在指定目录找到so文件,并将其复制到App工程的jniLibs\arm64-v8a目录,然后按照《FFmpeg开发实战:从零基础到短视频上线》的章节“12.1.3 App工程调用FFmpeg的so库”进行App的配置、编译和运行。