概述
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 一、下载ffmpeg源码
- 1.1 注意
- 二、配置编译脚本
- 2.1 修改配置文件
- 2.2 编写shell 编译脚本
- 2.3 查看编译结果
- 三、总结
- 3.1 No such file or directory
- 3.2 C compiler test failed
- 3.3 参考链接
一、下载ffmpeg源码
FFmpeg官网下载地址
下载最新的ffmpeg代码
1.1 注意
我们可以在如上图中所示的地方,下载已经编译好的ffmpeg二进制文件,免去编译工作。
二、配置编译脚本
2.1 修改配置文件
解压下载的ffmpeg源码压缩文件, 进行解压缩操作,获得ffmpeg源码文件夹。在其子目录下存在configure文件。需要修改配置文件。
需要将:
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
修改为:
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'
2.2 编写shell 编译脚本
shell 脚本内容如下:
#!/bin/bash
#指定临时文件,用来缓存编译信息用的
export TMPDIR=/Users/zhangfengcheng/android/canjun/ffmpeg/tmp
ADDI_CFLAGS="-marm"
API=19
PLATFORM=arm-linux-androideabi
#指定CPU架构
CPU=armv7-a
# 设置NDK 路径
NDK=~/android/android-ndk-r17c
SYSROOT=$NDK/platforms/android-$API/arch-arm/
ISYSROOT=$NDK/sysroot
ASM=$ISYSROOT/usr/include/$PLATFORM
TOOLCHAIN=$NDK/toolchains/$PLATFORM-4.9/prebuilt/darwin-x86_64
# 编译产物输出路径
OUTPUT=/Users/zfc/android/canjun/ffmpeg/out
# 显式指定c语言编译器路径变量
CC=$TOOLCHAIN/bin/arm-linux-androideabi-gcc
# 显式指定C++编译器路径变量
CXX=$TOOLCHAIN/bin/arm-linux-androideabi-g++
# 声明方法
function build
{
./configure
--prefix=$OUTPUT
--enable-shared
--disable-static
--disable-doc
--disable-ffmpeg
--disable-ffplay
--disable-ffprobe
--disable-avdevice
--disable-doc
--disable-symver
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi-
--target-os=android
--arch=arm
--enable-cross-compile
--sysroot=$SYSROOT
--extra-cflags="-I$ASM -isysroot $ISYSROOT -Os -fpic -marm"
--extra-ldflags="-marm"
--cc=$CC
--cxx=$CXX
$ADDITIONAL_CONFIGURE_FLAG
make clean
make -j8
make install
}
build
接下来,就是执行该脚本:
(假设脚本问价命名为:android_build.sh)
chmod 777 android_build.sh //赋予脚本执行权限,这里是最高权限
sudo ./android_build.sh //以root用户的权限执行该脚本
2.3 查看编译结果
在路径/Users/zfc/android/canjun/ffmpeg/out 下:
三、总结
当我们想要在Android、iOS上自己定制化一个音视频工具,ffmpeg是一个非常好的选择。在使用ffmpeg库时,在PC针对移动平台进行交叉ffmpeg则是这开头的第一步。对于App开发者来说,稍有不慎,交叉编译可能会阻碍你的步伐。于是,我也记录一下编译时遇到的问题,供各位道友参考。
3.1 No such file or directory
解决办法:
执行./configure --disable-x86asm 生成config.mak文件
3.2 C compiler test failed
根据 ffbuild/config.log的日志发现,指定的编译器不存在。
3.3 参考链接
问题解决,参考链接如下:
Clang编译FFmpeg常见问题
移植FFMpeg到Android:Ubuntu(Linux) FFMpeg编译
最后
以上就是冷酷火为你收集整理的音视频之一FFmpeg交叉编译一、下载ffmpeg源码二、配置编译脚本三、总结的全部内容,希望文章能够帮你解决音视频之一FFmpeg交叉编译一、下载ffmpeg源码二、配置编译脚本三、总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复