当前位置: 首页 > news >正文

FFmpeg编译hevc版本,支持mac、linux系统

相关前置库

openssl

  • 仓库:https://github.com/openssl/openssl.git
  • 编译方式参考INSTALL.md中的步骤
 # Unix / Linux / macOS$ ./config$ make && sudo make install

lame库

  • 如果需要处理mp3相关,依赖lame库, 仓库:https://sourceforge.net/projects/lame/
  • mp3相关操作可以参考《ffmpeg转换mp3的实现》
  • 编译方式
build_lame()
{echo "Build lame"if [ -f "${INSTALL_DIR}/lib/libmp3lame.a" ]; thenecho "Use built static libmp3lame.a"elseif [ -f "${THIRD_PARTY_DIR}/lame-3.100.tar.gz" ]; thenecho "exist lame source in 3rd dir, use it"tar -zxvf ${THIRD_PARTY_DIR}/lame-3.100.tar.gz -C $INSTALL_DIRelseecho "do not have lame source, need download"wget https://jaist.dl.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz -P ${THIRD_PARTY_DIR}fipushd $INSTALL_DIR/lame*os_type=$(uname)if [[ "$os_type" == "Darwin" ]]; thenXCRUN_SDK=`echo macosx | tr '[:upper:]' '[:lower:]'`CC="xcrun -sdk $XCRUN_SDK clang -arch x86_64"CFLAGS="-arch x86_64 $SIMULATOR"if ! xcodebuild -version | grep "Xcode [1-6]\."thenCFLAGS="$CFLAGS -fembed-bitcode"fiCXXFLAGS="$CFLAGS"LDFLAGS="$CFLAGS"CC=$CC ./configure --disable-shared --disable-frontend --host=x86_64-apple-darwin \--prefix=$INSTALL_DIR CC="$CC" CFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS"elif [[ "$os_type" == "Linux" ]]; thenLDFLAGS="-fPIC" ./configure --prefix=$INSTALL_DIR --build=BUILD --enable-static --enable-nasm --with-picelseecho "Unknown operating system"fimake -jmake installpopdfi
}

x264库

  • 如果需要x264,对应仓库:https://github.com/mirror/x264
build_x264()
{pushd $INSTALL_DIRecho "Build x264"if [ -d x264 ]; then echo "Use exists x264."elsegit clone -b master git@github.com:mirror/x264.gitfipushd x264if [ -f "${INSTALL_DIR}/lib/libx264.a" ]; thenecho "Use built static libx264.a"else./configure --prefix=$INSTALL_DIR \--enable-static \--enable-picfimake -jmake installpopdpopd
}

x265库

  • 如果需要x265,到官网下载https://www.x265.org/downloads/
build_x265()
{pushd $INSTALL_DIRecho "Build x265"if [ -d x265 ]; then echo "Use exists x265."elseif [ -f "${THIRD_PARTY_DIR}/x265_v3.3.tar.gz" ]; thenecho "exist x265 in 3rd dir, use it"tar -zxvf $THIRD_PARTY_DIR/x265_v3.3.tar.gz -C $INSTALL_DIRelseecho "download x265 source code from https://www.x265.org/downloads/ and save it to 3rd dir, for example: 3rd/x265_v3.3.tar.gz"fi fipushd x265_3.3ln -sf $INSTALL_DIR/../scripts/x265_multilib.sh build/linux/x265_multilib.shif [ -f "${INSTALL_DIR}/lib/libx265.a" ]; thenecho "Use built static libx265.a"elsepushd build/linuxsh x265_multilib.sh $INSTALL_DIRpopdfipopdpopd
}

FFmpeg的编译

  • 整理ffmpeg的编译相关build ffmpeg
# for debug, add --enable-debug --disable-stripping
build_ffmpeg()
{if [ -f "${INSTALL_DIR}/lib/libavcodec.so" ]; thenecho "Use built libavcodec.so"elsepushd $ROOT_DIRecho "check ffmpeg source"if [ -d FFmpeg ]; then echo "Use exists ffmpeg."elsegit clone -b feature/support_hevc_base_rc4.4 git@github.com:yagerfgcs/FFmpeg.gitfipushd FFmpeg# configureexport PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:$INSTALL_DIR/lib/pkgconfig./configure --pkg-config=$(which pkg-config) \--pkg-config-flags="--static" \--enable-static --enable-pic \--prefix=${INSTALL_DIR} \--enable-openssl --enable-nonfree \--enable-libmp3lame \--disable-encoders --enable-encoder=aac --enable-encoder=libx264 --enable-gpl --enable-libx264 --enable-encoder=libx265  --enable-libx265 \--disable-decoders --enable-decoder=aac --enable-decoder=h264 --enable-decoder=hevc  \--disable-demuxers --enable-demuxer=aac --enable-demuxer=mov --enable-demuxer=mpegts --enable-demuxer=flv --enable-demuxer=h264 --enable-demuxer=hevc --enable-demuxer=hls  \--disable-muxers --enable-muxer=h264  --enable-muxer=flv --enable-muxer=f4v  --enable-muxer=mp4 \--disable-doc --extra-cflags="-I${INSTALL_DIR}/include -fno-stack-check"\--extra-ldflags="-L${INSTALL_DIR}/lib -ldl -lpthread"# makemake -j16make installpopdpopdfi
}

备注

  • 自动编译脚本已经上传到github,参考:https://github.com/yagerfgcs/build_ffmpeg
http://www.lryc.cn/news/223779.html

相关文章:

  • AI系统ChatGPT程序源码+AI绘画系统源码+支持GPT4.0+Midjourney绘画+已支持OpenAI GPT全模型+国内AI全模型
  • Unity 3D 调整cube的颜色
  • 数字通信和fpga概述——杜勇版本学习笔记
  • 17.复制字符串 ,包括\0
  • C# List<T>.IndexOf()方法的使用
  • 深入理解JVM虚拟机第十八篇:JVM种局部变量表结构的认识
  • zabbix监控安装-linux
  • 7+差异分析+WGCNA+PPI网络,学会了不吃亏
  • 接口自动化测试
  • SPASS-描述性分析
  • kafka-go操作kafka
  • 如何判断被DDoS攻击
  • web —— html
  • 【C/PTA】数组练习(编程)
  • 力扣:155. 最小栈(Python3)
  • uniapp实现在线PDF文件预览
  • Python tkinter实现复刻Windows记事本UI和菜单的文本编辑器(一)
  • 【系统架构设计】架构核心知识: 3.3 DSSA和ABSD
  • Git的安装和常用命令Git与SVN的区别Gitee远程仓库团队开发代码共享演示
  • 五、计算机网络
  • 使用Grafana与MySQL监控监控网络延迟
  • 互联网常见职称
  • UI设计软件有哪些好用和免费的吗?
  • Linux开发工具之编译器gcc/g++
  • 【Kurbernetes资源管理】陈述式资源管理方式
  • flink测试map转换函数和process函数
  • 【跟小嘉学习JavaWeb开发】第一章 开发环境搭建
  • CSS语法、选择器、属性
  • 深度学习读取txt训练数据绘制参数曲线图的方法
  • VB.NET—DataGridView控件教程详解