当前位置: 首页 > 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

相关文章:

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

相关前置库 openssl 仓库:https://github.com/openssl/openssl.git编译方式参考INSTALL.md中的步骤 # Unix / Linux / macOS$ ./config$ make && sudo make installlame库 如果需要处理mp3相关,依赖lame库, 仓库:https…...

AI系统ChatGPT程序源码+AI绘画系统源码+支持GPT4.0+Midjourney绘画+已支持OpenAI GPT全模型+国内AI全模型

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…...

Unity 3D 调整cube的颜色

1.选中Assets后,右键->Create->Material 2.调整Material的颜色,然后将Material拖到对应的cube上...

数字通信和fpga概述——杜勇版本学习笔记

1数字通信处理流程 脉冲调制是每个数字通信系统中间必不可少的环节,通常是使用升余弦滚降滤波器来实现。 超外差接收机原理是利用本地产生的振荡波与输入信号混频,将输入信号频率变换为某个预先确定的频率的方法。超外差原理最早是由E.H.阿姆斯特朗于1…...

17.复制字符串 ,包括\0

#include<stdio.h> #include <cstring>int main(){int len1,len2;char s1[44];char s2[33];scanf("%s",s1);scanf("%s",s2);len1strlen(s1)1;printf("先s1的字符长度为&#xff1a;%d\n",len1) ;strcpy(s1,s2) ;printf("复制字…...

C# List<T>.IndexOf()方法的使用

C#中的List<T>.IndexOf()方法用于查找指定元素在列表中的索引位置。它返回第一个匹配项的索引&#xff0c;如果未找到匹配项&#xff0c;则返回-1。 语法&#xff1a;有三种参数可选 int List<T>.IndexOf(T item); int List<T>.IndexOf(T item, int star…...

深入理解JVM虚拟机第十八篇:JVM种局部变量表结构的认识

大神链接:作者有幸结识技术大神孙哥为好友,获益匪浅。现在把孙哥视频分享给大家。 孙哥链接:孙哥个人主页 作者简介:一个颜值99分,只比孙哥差一点的程序员 本专栏简介:话不多说,让我们一起干翻JVM 本文章简介:话不多说,让我们讲清楚虚拟机栈存储结构和运行原理 文章目…...

zabbix监控安装-linux

zabbix6.4中文文档1. 简介 (zabbix.com) Zabbix 是一个企业级的开源分布式监控解决方案。 1.zabbix结构体系 Server&#xff1a; server 是存储所有配置、统计和操作数据的中央存储库。 Proxy&#xff1a; zabbix proxy可以代替 Zabbix server 收集性能和可用性数据。p…...

7+差异分析+WGCNA+PPI网络,学会了不吃亏

今天给同学们分享一篇生信文章“Integrated PPI- and WGCNA-Retrieval of Hub Gene Signatures Shared Between Barretts Esophagus and Esophageal Adenocarcinoma”&#xff0c;这篇文章发表在Front Pharmacol期刊上&#xff0c;影响因子为5.6。 结果解读&#xff1a; 选定研…...

接口自动化测试

下面我们来看看&#xff0c;针对在本章优化重构后的接口测试框架来说&#xff0c;有哪些优点呢。 我们首先来看下目录&#xff0c; 1.Case文件夹用来存放我们的测试用例相关的&#xff0c; 2.Data用来存储我们的测试数据&#xff0c;Excel管理测试用例&#xff0c;yaml文件管理…...

SPASS-描述性分析

将身高移入变量 结果展示&#xff1a; 表中分析变量“身高”的个案数、所有个案中的极大值、极小值、均值、标准差及偏度和峰度...

kafka-go操作kafka

package mainimport ("context""fmt""os""os/signal""syscall""time""github.com/segmentio/kafka-go" )var (topic "user_click"reader *kafka.Reader )// 生产消息 func writeKafka(ctx …...

如何判断被DDoS攻击

当网络和设备正常的情况下&#xff0c;服务器突然出现连接断开、访问卡顿、用户掉线等情况;服务器CPU或内存占用率出现明显增长;网络出入流量出现明显增长;网站或应用程序突然出现大量的未知访问;登录服务器失败或者登录过慢等等。以上是最为常见的服务器被 DDoS攻击后出现的几…...

web —— html

Web —— css基础 1. HTML2. 基本HTML结构3. HTML常用标签3.1 文本相关标签3.2 HTML图像标签3.3 HTML超链接标签3.4 HTML表&#xff0c;单3.4.1 HTML表格3.4.2 HTML表单&#xff0c;输入框&#xff08;多选框&#xff0c;单选框&#xff09;下拉框 3.5 HTML分区标签3.5.1 div标…...

【C/PTA】数组练习(编程)

本文结合PTA专项练习带领读者掌握数组&#xff0c;刷题为主注释为辅&#xff0c;在代码中理解思路&#xff0c;其它不做过多叙述。 文章目录 7-1 计算最大值出现的次数7-2 求一批整数中出现最多的个位数字7-3 装箱问题7-4 数组-值钱的微信号7-5 数组-吹泡泡7-6 数组-数学鬼才 7…...

力扣:155. 最小栈(Python3)

题目&#xff1a; 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部…...

uniapp实现在线PDF文件预览

下载pdf文件放在static文件夹下 bug&#xff1a;hbuildX创建的项目pdf文件夹可以放在根目录下面&#xff0c;但是cli创建的项目无法预览&#xff0c;只能放在static下面 按钮跳转预览页面 <button click"toPdf">pdf</button>methods: {toPdf() {uni.…...

Python tkinter实现复刻Windows记事本UI和菜单的文本编辑器(一)

下一篇&#xff1a;Python tkinter实现复刻Windows记事本UI和菜单的文本编辑器&#xff08;二&#xff09;-CSDN博客 介绍&#xff1a; Windows操作系统中自带了一款记事本应用程序&#xff0c;通常用于记录文字信息&#xff0c;具有简单文本编辑功能。Windows的记事本可以新…...

【系统架构设计】架构核心知识: 3.3 DSSA和ABSD

目录 一 特定领域软件架构DSSA 1 DSSA 2 DSSA的基本活动和产物 3 参与DSSA的人员 4 建立过程...

Git的安装和常用命令Git与SVN的区别Gitee远程仓库团队开发代码共享演示

目录 一、Git入门 1.1 Git简介 1.2 Git与SVN的区别 1.2.1 详解 1.2.2 图解 1.3 Git相较于SVN的优势与劣势 1.3.1 Git的优势与劣势 1.3.2 SVN的优势与劣势 1.4 Git的工作流程 1.4.1 图解 1.4.2 详解 二、Git的安装以及常用命令 2.1 Git官网链接 2.2 安装步骤 2.…...

如何重塑游戏开发范式:Godot-MCP的AI驱动引擎协作架构揭秘

如何重塑游戏开发范式&#xff1a;Godot-MCP的AI驱动引擎协作架构揭秘 【免费下载链接】Godot-MCP An MCP for Godot that lets you create and edit games in the Godot game engine with tools like Claude 项目地址: https://gitcode.com/gh_mirrors/god/Godot-MCP 在…...

ncmppGui:终极免费NCM音乐解密工具完整指南

ncmppGui&#xff1a;终极免费NCM音乐解密工具完整指南 【免费下载链接】ncmppGui 一个使用C编写的极速ncm转换GUI工具 项目地址: https://gitcode.com/gh_mirrors/nc/ncmppGui 你是否曾经在网易云音乐下载了心爱的歌曲&#xff0c;却发现只能在特定客户端播放&#xff…...

Python Tkinter 入门实战:开发一个桌面待办事项应用,带你学会 GUI 开发基础

Python Tkinter 入门实战&#xff1a;开发一个桌面待办事项应用&#xff0c;带你学会 GUI 开发基础 很多 Python 初学者学完基础语法后&#xff0c;都会进入一个新的阶段&#xff1a;不只是想写命令行脚本&#xff0c;而是想做一个真正“能点按钮、能输入内容、能看到界面”的…...

5个技巧让TV Bro成为你智能电视的完美浏览器伴侣

5个技巧让TV Bro成为你智能电视的完美浏览器伴侣 【免费下载链接】tv-bro Simple web browser for android optimized to use with TV remote 项目地址: https://gitcode.com/gh_mirrors/tv/tv-bro TV Bro是一款专为Android电视优化的开源智能电视浏览器&#xff0c;通过…...

【Docker AI Toolkit 2026终极指南】:5大颠覆性新功能+3个生产环境避坑清单,早用早降本37%

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Docker AI Toolkit 2026终极概览与价值定位 Docker AI Toolkit 2026 是面向生产级 AI 工程化的统一容器化平台&#xff0c;深度融合模型训练、推理服务、可观测性与合规治理能力。它不再仅是“Docker …...

MCP 2026医疗数据安全配置落地难?3类医院真实踩坑场景+5步零误配实施路径

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;MCP 2026医疗数据安全配置落地难&#xff1f;3类医院真实踩坑场景5步零误配实施路径 三类典型落地失败场景 三级甲等医院&#xff1a;过度依赖厂商预置模板&#xff0c;未适配院内HIS/PACS系统接口差…...

免费复古字体终极指南:EB Garamond 12快速上手完整教程 [特殊字符]

免费复古字体终极指南&#xff1a;EB Garamond 12快速上手完整教程 &#x1f3a8; 【免费下载链接】EBGaramond12 项目地址: https://gitcode.com/gh_mirrors/eb/EBGaramond12 你是否在为设计项目寻找一款既有历史底蕴又完全免费的开源字体&#xff1f;EB Garamond 12正…...

抖音去水印批量下载工具:终极内容保存解决方案

抖音去水印批量下载工具&#xff1a;终极内容保存解决方案 【免费下载链接】TikTokDownload 抖音去水印批量下载用户主页作品、喜欢、收藏、图文、音频 项目地址: https://gitcode.com/gh_mirrors/ti/TikTokDownload 还在为抖音视频上的水印烦恼吗&#xff1f;想要保存喜…...

Python的__complex__方法支持复数运算

Python作为一门功能强大的编程语言&#xff0c;其内置的复数运算支持为科学计算和工程应用提供了极大便利。其中&#xff0c;__complex__方法是一个关键机制&#xff0c;允许自定义类对象转换为复数形式&#xff0c;从而无缝融入Python的复数运算体系。本文将深入探讨这一方法的…...

IDEA下载安装与远程开发:连接PyTorch 2.8服务器进行Java/Python深度学习开发

IDEA下载安装与远程开发&#xff1a;连接PyTorch 2.8服务器进行Java/Python深度学习开发 1. 为什么需要远程开发 在深度学习项目中&#xff0c;我们经常面临一个矛盾&#xff1a;本地开发环境配置简单但计算资源有限&#xff0c;而云端服务器性能强大却操作不便。IntelliJ ID…...