交叉编译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相关推荐

  1. linux 编译ffmpeg 支持x264, x265

    原址 1. 前言 本教程涉及的ffmpeg, x264, x265 2. 环境依赖 2.1 删除系统中安装的ffmpeg等库 [plain] view plaincopy sudo apt-get - ...

  2. linux 编译x264,linux 编译ffmpeg 支持x264, x265

    1. 前言 本教程涉及的ffmpeg, x264, x265 2. 环境依赖 2.1 删除系统中安装的ffmpeg等库 sudo apt-get --purge remove ffmpeg mplay ...

  3. ffmpeg arm linux编译,arm linux 移植 ffmpeg 库 + x264 + x265

    背景 Ffmpeg 中带有h264的解码,没有编码,需要添加x264.libx264是一个自由的H.264编码库,是x264项目的一部分,使用广泛,ffmpeg的H.264实现就是用的libx264. ...

  4. 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 ...

  5. 【经验总结】Centos8安装X264,X265,OPUS,AAC,FFmpeg一次性解决方案

    Centos+FFmpeg(x264,x265,opus,aac) 问题总结 PKG_CONFIG的问题 PKG_CONFIG需要链接到/usr/lib64中去 需要将PKG_CONFIG_PATH输 ...

  6. QT + FFmpeg 5.x + x264 + x265 + SDL2 音视频播放器

    QT + FFmpeg 5.x + x264 + x265 + SDL2 音视频播放器 使用了QT的QML设计界面,人机交互; 使用了FFmpeg 5.x + x264 + x265 + SDL2 完 ...

  7. Hisi3516交叉编译ffmpeg支持h264编码

    前言 Hi3516是海思半导体针对高清IPCamera产品应用开发的一款专业高端SOC芯片,具有1080P@30fps H264多码流编码性能.而ffmpeg是众多播放器的底层解.编码库,x264是一 ...

  8. ubuntu 14.04 交叉编译ffmpeg

    因为工作的关系和自己的兴趣原因,我尝试了自己从ubuntu 14.04 交叉编译ffmpeg. 我交叉编译ffmpeg的方法,完全是摸索得到的.在这之前,我从来没有试过交叉编译. 在从ubuntu成功 ...

  9. 音视频标准:MEPG阵营(x264,x265等)和Google阵营(vp8,vp9等),中国标准(XAVS2)

    视频标准:MEPG阵营和Google开源阵营.   MPEG-2,VC1,H.263,H.264/AVC,H.265/HEVC,VP9,AV1--所有这些标准都建立在基于块的混合视频编码结构上.   ...

最新文章

  1. java 内部类的理解
  2. samba srver on centos-7
  3. Silverlight 3.0 不再包含 asp:silverlight 控件
  4. linuex查看繁忙_如何用九条命令在一分钟内检查Linux服务器性能?
  5. C++primer 9.2.1节练习
  6. tableau必知必会之学做漂亮易用的哑铃图
  7. Hadoop_NameNode_代码分析_目录树(2)
  8. fastdfs的tracker启动之后一直选举_jraft选举策略
  9. 5年iPhone用户换小米11 Ultra:惊叹小米变化大
  10. 哪几所大学计算机软件方面是强项,计算机软件工程专业排名靠前的大学是那几所...
  11. SLAM_VIO中的IMU模型
  12. 简单介绍一下树莓派zero w
  13. 适合新手练习js解密的小站--飞卢小说网登录--第四期
  14. #pragma once用法总结
  15. [NOTE] NFS 和TFTP安装与配置
  16. web前端新手入门:中国互联网的发展史
  17. linux下qt软件使用方法,QT入门 QT Creator 使用
  18. asyncio 系列五、同步原语—Synchronization Primitives
  19. PostgreSQL之外键约束
  20. 2021.06.29【R语言】丨png转pdf批量生成

热门文章

  1. 如何有效的清理c盘文件?真实有效
  2. 【R语言 数据挖掘】R语言如何做关联规则?
  3. 机器人技术-HC-SR04超声波传感器数据及机器人避障的应用
  4. 夏日闪电惊雷想念父亲
  5. 我用这个画3d图和电路图、上网,防止鼠标手
  6. 安装及配置 Mac 上的 Rime 输入法——鼠鬚管 (Squirrel)(也适用于小狼豪)
  7. 科研笔记(一) 室内定位技术讲解
  8. 关闭所有杀毒软件快捷方法
  9. sapmto生产模式配置及操作详解_PP: 混合生产方式(MTO与MTS为例)
  10. 通过iptables 禁止访问域名方法整合