交叉编译ffmpeg:aac x264 x265
交叉编译AAC:
1.下载aac源码
wget -O fdk-aac.tar.gz https://github.com/mstorsjo/fdk-aac/tarball/master
tar xzvf fdk-aac.tar.gz
2.运行 autogen.sh生成configure文件
如果此时出现错误:如
Can't exec "libtoolize": No such file or directory at /usr/bin/autoreconf line 190.
则在ubuntu下安装libtool.deb或者更新用命令:apt-get install libtool
3.执行configure生成makefile文件
3.make
4.make install
交叉编译x265
1.下载源码
sudo git clone git://git.videolan.org/x264
2.运行configure生成makefile
sudo ./configure --prefix=/my/DM3730/x264 --enable-static --host=arm-none-linux-gnueabi --cross-prefix=arm-none-linux-gnueabi- --disable-asm
3.make
4.make install
交叉编译x265
1.下载源码
Index of /pub/videolan/x265/
我用的是1.9版本
注意:
其中x265.h中一个结构体的实现完全是C++风格,结构体中含有函数,所以这样的话ffmpeg是编译不通过的,但是这个版本有一个好处是专门有一个
arm-linux交叉编译目录,里面创建了一个toolchain,编译很方便
本文福利, C++音视频学习资料包、技术视频,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)↓↓↓↓↓↓见下面↓↓文章底部↓↓
2.手动创建一个toolchain
进入build目录,创建一个arm-linux子目录,进入arm-linux目录,并分别创建 make-Makefiles.bash和 toolchain.cmake两个文件
在make-Makefiles.bash中写入:
#!/bin/bash
# Run this from within a bash shellcmake -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake -G "Unix Makefiles" ../../source && ccmake ../../source
在toolchain.cmake中写入
# CMake toolchain file for cross compiling x265 for ARM arch
set(CROSS_COMPILE_ARM 1)
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR armv6l)
# specify the cross compiler
set(CMAKE_C_COMPILER arm-none-linux-gnueabi-gcc)
set(CMAKE_CXX_COMPILER arm-none-linux-gnueabi-g++)
# specify the target environment
SET(CMAKE_FIND_ROOT_PATH /home/kamui/work/toolchain/toolchain/CodeSourcery/Sourcery_G++_Lite/bin)
chmod 777 make-Makefiles.bash
3. sudo sh ./make-Makefiles.bash
注意:x265的编译使用的是cmake,对cmake的版本要求较高,尽量用最新源码自己编译一个cmake
运行这步之后,会弹出一个目录选择框,把 CMAKE_INSTALL_PREFIX指向你需要安装的目录,注意这个PREFIX在toolchain中设置好像没生效,所以在这里在选择下,设置完后,按c,然后按g继续
6.sudo make
在编译的过程中如果如下报错:
1.如果此时在编译cli时报错final link failed: Nonrepresentable section on output,那么修改toolchan,添加set(CMAKE_EXE_LINKER_FLAGS "-fpic -shared")
然后重新从步骤3开始执行
2.如果报uses VFP register arguments类型的错误,说明是交叉编译浮点类型的问题,浮点编译类型在交叉编译中很容易遇到,在我这运行make-Makefiles.bash后static,share,cli的连接类型都是hard,
编译报错,需要改为soft,但是在cmake的参数中我试了Flags设置浮点类型的地方并没有生效,所以只能手动去改makefile文件,执行完make-Makefiles.bash后会生成好几个makefile文件,每个makefile文件中的编译连接选项都在flags.make的文件中:
encoder/CMakeFiles/encoder.dir/flags.make
common/CMakeFiles/common.dir/flags.make
CMakeFiles/cli.dir/flags.make
CMakeFiles/x265-shared.dir/flags.make
CMakeFiles/x265-static.dir/flags.make
分别把这五个文件中的“-mfloat-abi=hard”改为“-mfloat-abi=soft”或“-mfloat-abi=softfp”
改完之后再指定步骤6进行make,这时应该就OK了
7.sudo make install
交叉编译ffmpeg
1.下载源码
git clone git://source.ffmpeg.org/ffmpeg.git
2.pkg-config
把/usr/bin/pkg-config复制到交叉编译环境所在目录中,与arm-none-linux-gnueabi-gcc在同一个目录,并改名为arm-none-linux-gnueabi-pkg-config,这么做的原因是ffmpeg在configure的时候,一定需要找到x265的x265.pc文件,而x264的没有的话,通过指定lib目录和头文件就可以了。
2.运行configure生成makefile
sudo ./configure --prefix=/my/DM3730/ffmpeg --enable-cross-compile --cross-prefix=arm-none-linux-gnueabi- --arch=armel --target-os=linux --enable-gpl --enable-nonfree --extra-cflags="-I/my/DM3730/fdkaac/include -I/my/DM3730/x264/include -I/my/DM3730/x265/include" --extra-ldflags="-L/my/DM3730/fdkaac/lib -L/my/DM3730/x264/lib -L/my/DM3730/x265/lib" --enable-libfdk-aac --enable-libx264 --enable-libx265 --pkg-config-flags=--static --extra-libs="-ldl -fpic -shared" --enable-shared --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver<span style="background-color: inherit; line-height: 1.5;"></span>
此时如果报“x265 not found using pkg-config ”错误,那么检查/usr/local/lib/pkgconfig/x265.pc,如果这个文件不存在那么把你编译x265时所指定的目录中拷贝过来
configure成功如下:
3.sudo make
4.sudo make install
原文链接:交叉编译ffmpeg:aac x264 x265 - 资料 - 我爱音视频网 - 构建全国最权威的音视频技术交流分享论坛
本文福利, C++音视频学习资料包、技术视频,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)↓↓↓↓↓↓见下面↓↓文章底部↓↓
交叉编译ffmpeg:aac x264 x265相关推荐
- linux 编译ffmpeg 支持x264, x265
原址 1. 前言 本教程涉及的ffmpeg, x264, x265 2. 环境依赖 2.1 删除系统中安装的ffmpeg等库 [plain] view plaincopy sudo apt-get - ...
- linux 编译x264,linux 编译ffmpeg 支持x264, x265
1. 前言 本教程涉及的ffmpeg, x264, x265 2. 环境依赖 2.1 删除系统中安装的ffmpeg等库 sudo apt-get --purge remove ffmpeg mplay ...
- ffmpeg arm linux编译,arm linux 移植 ffmpeg 库 + x264 + x265
背景 Ffmpeg 中带有h264的解码,没有编码,需要添加x264.libx264是一个自由的H.264编码库,是x264项目的一部分,使用广泛,ffmpeg的H.264实现就是用的libx264. ...
- FFmpeg之x264/x265转码去掉B帧(二十六)
1.avc转hevc转码默认带B帧 # ffmpeg -i guomei_avc.mp4 -c:v libx265 has_b_frame.h265 # ffmpeg -i guomei_avc.mp ...
- 【经验总结】Centos8安装X264,X265,OPUS,AAC,FFmpeg一次性解决方案
Centos+FFmpeg(x264,x265,opus,aac) 问题总结 PKG_CONFIG的问题 PKG_CONFIG需要链接到/usr/lib64中去 需要将PKG_CONFIG_PATH输 ...
- QT + FFmpeg 5.x + x264 + x265 + SDL2 音视频播放器
QT + FFmpeg 5.x + x264 + x265 + SDL2 音视频播放器 使用了QT的QML设计界面,人机交互; 使用了FFmpeg 5.x + x264 + x265 + SDL2 完 ...
- Hisi3516交叉编译ffmpeg支持h264编码
前言 Hi3516是海思半导体针对高清IPCamera产品应用开发的一款专业高端SOC芯片,具有1080P@30fps H264多码流编码性能.而ffmpeg是众多播放器的底层解.编码库,x264是一 ...
- ubuntu 14.04 交叉编译ffmpeg
因为工作的关系和自己的兴趣原因,我尝试了自己从ubuntu 14.04 交叉编译ffmpeg. 我交叉编译ffmpeg的方法,完全是摸索得到的.在这之前,我从来没有试过交叉编译. 在从ubuntu成功 ...
- 音视频标准:MEPG阵营(x264,x265等)和Google阵营(vp8,vp9等),中国标准(XAVS2)
视频标准:MEPG阵营和Google开源阵营. MPEG-2,VC1,H.263,H.264/AVC,H.265/HEVC,VP9,AV1--所有这些标准都建立在基于块的混合视频编码结构上. ...
最新文章
- java 内部类的理解
- samba srver on centos-7
- Silverlight 3.0 不再包含 asp:silverlight 控件
- linuex查看繁忙_如何用九条命令在一分钟内检查Linux服务器性能?
- C++primer 9.2.1节练习
- tableau必知必会之学做漂亮易用的哑铃图
- Hadoop_NameNode_代码分析_目录树(2)
- fastdfs的tracker启动之后一直选举_jraft选举策略
- 5年iPhone用户换小米11 Ultra:惊叹小米变化大
- 哪几所大学计算机软件方面是强项,计算机软件工程专业排名靠前的大学是那几所...
- SLAM_VIO中的IMU模型
- 简单介绍一下树莓派zero w
- 适合新手练习js解密的小站--飞卢小说网登录--第四期
- #pragma once用法总结
- [NOTE] NFS 和TFTP安装与配置
- web前端新手入门:中国互联网的发展史
- linux下qt软件使用方法,QT入门 QT Creator 使用
- asyncio 系列五、同步原语—Synchronization Primitives
- PostgreSQL之外键约束
- 2021.06.29【R语言】丨png转pdf批量生成