ffmpeg的那点小事儿--编译ffmpeg同时支持libx264(视频编码)和libfdk(音频编码)

主要是shell脚本编写上的问题,直接上脚本代码

#!/bin/bash#1、首先:定义下载的库名称
source="ffmpeg-4.0.2"#2、其次:定义".h/.m/.c"文件编译的结果目录
#目录作用:用于保存.h/.m/.c文件编译后的结果.o文件
cache="cache"#3、定义".a"静态库保存目录
#pwd命令:表示获取当前目录
staticdir=`pwd`/"ffmpeg-iOS"#4、添加FFmpeg配置选项->默认配置
configure_flags="--enable-cross-compile --disable-debug --enable-x86asm --disable-programs --disable-doc --enable-pic"configure_flags="$configure_flags --enable-avdevice --enable-avcodec --enable-avformat --enable-libx264 --enable-decoder=h264 --enable-demuxer=h264 --enable-parser=h264 --enable-decoder=aac --enable-decoder=aac_latm --enable-nonfree"#5、定义默认CPU平台架构类型
#arm64 armv7->真机->CPU架构类型
#x86_64 i386->模拟器->CPU架构类型
archs="arm64 armv7 x86_64 i386"#6、指定我们的这个库编译系统版本->iOS系统下的7.0以及以上版本使用这个静态库
targetversion="8.0"#7、接受命令后输入参数
#我是动态接受命令行输入CPU平台架构类型(输入参数:编译指定的CPU库)
if [ "$*" ]
then#存在输入参数,也就说:外部指定需要编译CPU架构类型archs="$*"
fi#8、安装汇编器->yasm
if [ ! `which yasm` ]
then#Homebrew:软件管理器if [ ! `which brew` ]thenecho "安装brew"ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" || exit 1fiecho "安装yasm"#成功了#下载安装这个汇编器#exit 1->安装失败了,那么退出程序brew install yasm || exit 1
fiecho "star build"#9、for循环编译FFmpeg静态库
currentdir=`pwd`
for arch in $archs
doecho "begin"#9.1、创建目录#在编译结果目录下-创建对应的平台架构类型mkdir -p "$cache/$arch"#9.2、进入这个目录cd "$cache/$arch"#9.3、配置编译CPU架构类型->指定当前编译CPU架构类型archflags="-arch $arch"#9.4、判定一下你到底是编译的是模拟器.a静态库,还是真机.a静态库if [ "$arch" = "i386" -o "$arch" = "x86_64" ]then#模拟器platform="iPhoneSimulator"#支持最小系统版本->iOS系统archflags="$archflags -mios-simulator-version-min=$targetversion"else#真机(mac、iOS都支持)platform="iPhoneOS"#支持最小系统版本->iOS系统archflags="$archflags -mios-version-min=$targetversion -fembed-bitcode"#注意:优化处理(可有可无)#如果架构类型是"arm64",那么if [ "$arch" = "arm64" ]then#GNU汇编器(GNU Assembler),简称为GAS#GASPP->汇编器预处理程序#解决问题:分段错误#通俗一点:就是程序运行时,变量访问越界一类的问题EXPORT="GASPP_FIX_XCODE5=1"fifi#10、正式编译#tr命令可以对来自标准输入的字符进行替换、压缩和删除XCRUN_SDK=`echo $platform | tr '[:upper:]' '[:lower:]'`#编译器->编译平台CC="xcrun -sdk $XCRUN_SDK clang"#架构类型->arm64if [ "$arch" = "arm64" ]then#音视频默认一个编译命令#preprocessor.pl帮助我们编译FFmpeg->arm64位静态库AS="gas-preprocessor.pl -arch aarch64 -- $CC"else#默认编译平台AS="$CC"fiTMPDIR=${TMPDIR/%\/} $currentdir/$source/configure \--target-os=darwin \--arch=$arch \--cc="$CC" \--as="$AS" \$configure_flags \--enable-gpl \--disable-encoders \--enable-libx264 \--enable-encoder=libx264 \--enable-encoder=mjpeg \--enable-encoder=png \--enable-libfdk-aac \--enable-encoder=libfdk_aac \--enable-decoder=libfdk_aac \--extra-cflags="$archflags" \--extra-ldflags="$archflags" \--extra-cflags="-I/Users/avalanching/Desktop/FFmpeg/thin-x264/arm64/include" \--extra-ldflags="-L/Users/avalanching/Desktop/FFmpeg/thin-x264/arm64/lib" \--extra-cflags="-I/Users/avalanching/Desktop/FFmpeg/thin-fdkaac/arm64/include" \--extra-ldflags="-L/Users/avalanching/Desktop/FFmpeg/thin-fdkaac/arm64/lib" \--prefix="$staticdir/$arch" \|| exit 1make -j3 install $EXPORT || exit 1cd $currentdirecho "build was success"
done

需要注意的地方:

--enable-gpl \
--disable-encoders \
--enable-libx264 \
--enable-encoder=libx264 \
--enable-encoder=mjpeg \
--enable-encoder=png \
--enable-libfdk-aac \
--enable-encoder=libfdk_aac \
--enable-decoder=libfdk_aac \
--extra-cflags="$archflags" \
--extra-ldflags="$archflags" \
--extra-cflags="-I/Users/avalanching/Desktop/FFmpeg/thin-x264/arm64/include" \
--extra-ldflags="-L/Users/avalanching/Desktop/FFmpeg/thin-x264/arm64/lib" \
--extra-cflags="-I/Users/avalanching/Desktop/FFmpeg/thin-fdkaac/arm64/include" \
--extra-ldflags="-L/Users/avalanching/Desktop/FFmpeg/thin-fdkaac/arm64/lib"#--desable-encoders 这里是禁用了其他的编码器,如果需要使用其他的编码器,可以删除这一句
#enable-libx264 和 --enable-libfdk-acc都是去指定音视频的编码器,分别为h264和aac
#avalanching 是我的主机名,在编写的时候,记得去换成你们的路径

github地址:https://github.com/Avanlanching/Avalanching_shell_for_ffmpeg

目录下包含:ffmpeg4.0.2的源码,编译过的libx264和libfdk-aac,还用已经支持h264和aac的ffmpeg,不想编译的可以直接使用FFmpeg-iOS的下资源,另外需要thin-x264和thin-fdkaac下面的头文件和库

ffmpeg的那点小事儿--编译ffmpeg同时支持libx264(视频编码)和libfdk(音频编码)相关推荐

  1. FFMPEG让群晖DSM7.X版本的Video Station支持DTS视频编码和EAC3音频编码

    FFMPEG让群晖DSM7.X版本的Video Station支持DTS视频编码和EAC3音频编码 安装ffmpeg 恢复 参考文章 安装ffmpeg 群晖 >套件中心 >设置>套件 ...

  2. 微信小程序:和平精英吃鸡捏脸数据助手微信小程序源码下载支持激励视频

    这是一款捏脸数据的助手 内包含了N款明星捏脸数据和各位大咖的数据 这款小程序支持激励视频广告 用户看广告然后复制数据到和平精英里面就可以给人物换脸了 小程序里面也有教用户操作的教程 安装方法: 使用微 ...

  3. ffmpeg的那点小事儿--ffmpeg的导入和视频解码,YUV保存(ffmpeg4.0.2)

    一.ffmpeg开发的基本知识了解 第一点:一个视频播放流程 通常看到视频格式:mp4.mov.flv.wmv等等- 称之为:封装格式 第二点:视频播放器 两种模式播放器 第一种:可视化界面播放器(直 ...

  4. 【FFmpeg】Hello World!尝试如何编译FFmpeg程序

    1.说明 下面的例子只演示,编译FFmpeg时用的头文件和库,不涉及编解码,只调用一个可以打印编译FFmpeg库的配置项的接口:avcodec_configuration() 2.avCfg.c #i ...

  5. ffmpeg for android windows,windows10下编译ffmpeg for android

    最近实现了一款基于FFMpeg的支持多路视频的实时流媒体播放器:https://github.com/huweijian5/RtspPlayer 有兴趣能够关注下.html 本文记录在windows1 ...

  6. linux编译ffmpeg成so,「ffmpeg」一 mac 环境下编译ffmpeg,生成so库文件

    1.下载ffmpeg源码,官网,我这里直接采用git 方式下载: 下载ffmpeg.png 终端输入git命令: 静静等待~ 最后下载的版本为3.4.6 . image.png 这里注意一下,刚开始我 ...

  7. 【FFMPEG系列】之windows下编译FFMPEG篇----之三(MingW64)

    目录结构 序 1 .安装mingw64 1.1 mingw64的安装 1.2 msys的安装 2.编译ffmpeg 2.1 编译 序 前文"windows下编译FFMPEG篇----之一(M ...

  8. 【FFMPEG系列】之windows下编译FFMPEG篇----之二(MSYS2)

    序 有一些ffmpeg编译教程使用mingw与msys工具编译ffmpeg,老版本的Mingw可能不包括msys(此属猜测,欢迎留言告诉),所以安装时既要下载Mingw,又要下载msys.较新版本的M ...

  9. 利用第三方解码器ffmpeg让群晖DSM6.2.4版本的Video Station支持DTS视频编码和EAC3音频编码

    前言 截至2022年5月6日,此方法可用! 本文章可以解决群晖版本6.2.4-25556 Update5(Video Station版本2.5.0-1656)在播放dts.eac3音频编码的视频时提示 ...

  10. 和平精英吃鸡捏脸数据助手微信小程序源码下载支持激励视频

    这是一款捏脸数据的助手 内包含了N款明星捏脸数据和各位大咖的数据 这款小程序支持激励视频广告 用户看广告然后复制数据到和平精英里面就可以给人物换脸了 小程序里面也有教用户操作的教程 安装方法: 使用微 ...

最新文章

  1. laravel中及其常用的一些函数方法(自己看)和技巧(不断添加中)
  2. C++编程语言之赋值运算符
  3. Win32 像素格式描述符学习
  4. java语言的数组描述_下列关于Java语言的数组描述中,错误的是()。_学小易找答案...
  5. 美国面试之旅——面试经验分享
  6. Android怎么插手机卡,魅蓝E手机卡怎么装 魅蓝E手机SIM卡安装图文教程
  7. java context.xml_java-context.xml的解释
  8. php删除数据库数据操作日志文件,MSSQL清空日志删除日志文件
  9. 怎样使用SQL SERVER新建立一个数据库
  10. win10鼎信诺为什么安装不了_win10安装软件没反应怎么办
  11. spring boot  mybatis 事务回滚
  12. 可视化:架构师必看 京东咚咚架构演进
  13. 百度糯米 android,百度糯米安卓版|百度糯米for android官方手机版 6.7.1 - 系统天堂...
  14. android相对控件居中对齐,相对布局(RelativeLayout)常用属性
  15. 乡镇卫生院计算机编制待遇怎么样,三甲医院VS乡镇卫生院事业编,选哪个?
  16. 关于服务器上安装新版Python报错的问题
  17. 云服务的未来:下一个淘宝
  18. Python from import导包ModuleNotFoundError No module named,找不到模块问题
  19. 新东方雅思词汇(List 36 ~ List 40)
  20. 彻底解决windows英文版操作系统中文乱码问题

热门文章

  1. 云专网和云专线的区别_云专线网络接入解决方案
  2. STM32学习——直接存储器访问(DMA)
  3. Python计算贝塔系数和夏普比率
  4. opencv Library QUIRC is not linked解决办法
  5. 情缘难舍 愿为一叶扁舟
  6. 还在用ListView?!OutMan!RecyclerView!
  7. 移动硬盘变为raw格式时,如何进行数据恢复
  8. 如何查看计算机开机启动的服务,开机启动项在哪里设置 开机启动项设置方法【图文】...
  9. 【Unity Shader】(十) ------ UV动画原理及简易实现
  10. 通信原理学习笔记6-1:数字解调——基础解调链路、匹配滤波器和AWGN信道最佳接收机