ffmpeg 静态编译

文档说明: 只记录关键的地方; 发文时间: 2023-08-06

意义: 静态编译ffmpeg ,可自由裁剪其功能 ,使用libc 构建 ; 支持macos、linux 构建 ;生成库依赖库图

环境: alpine:3.17 docker clang

状态: 继续完善中

备注:

大部分软件源代码来源于 github.com ,如果下载过程断断续续的。请自备代理

复用 swoole-cli 编写好的静态依赖库构建 和 编译流程

支持 macos 环境下构建

与 GPU、X11 相关的库都未构建,因为GPU 驱动、X11 无法实现静态编译

构建步骤:

一条命令执行所有构建流程 bash build-release-example.sh


# 下载项目源码 (new_dev 分支)

git clone -b new_dev https://github.com/jingjingxyk/swoole-cli.git

# 准备运行环境
cd swoole-cli

# 运行docker alpine 3.17 环境
sh sapi/quickstart/linux/run-alpine-container.sh

# 进入容器
sh sapi/quickstart/linux/connection-swoole-cli-alpine.sh

# 准备容器内基础软件
sh sapi/quickstart/linux/alpine-init.sh --mirror china

# 准备 php 运行时
sh setup-php-runtime.sh --mirror china

# 初始化本项目依赖
composer update 

# 下载 ffmpeg 源码和 ffmpeg 依赖的库的源码 ,并生成构建脚本 make.sh
php prepare.php +ffmpeg  --with-http-proxy=http://192.168.3.26:8015 

# 准备 ffmpeg 构建环境依赖 (比如 pip3 install meson ninja )
bash make-install-deps.sh

# 构建ffmpeg 依赖的的各种库,包括ffmpeg 自身
bash make.sh all-library

# 构建完毕,拷贝目标文件到 bin 目录
bash make.sh config 

自由裁剪: 修改这个文件即可 ffmpeg.php

生成 ffmpeg 依赖库依赖图

# 生成 ext-dependency-graph.graphviz.dot 文件
php prepare.php +ffmpeg --without-docker=1  --with-skip-download=1 --with-dependency-graph=1

# 生成PDF 和 svg 格式的文件
sh sapi/extension-dependency-graph/generate-dependency-graph.sh

## 生成的依赖图文件位于
bin/ext-dependency-graph.pdf
bin/ext-dependency-graph.svg 

用新标签页打开依赖图,图标可以链接到各依赖库的官网

体验ffmpeg 静态编译结果

参考文档

  1. swoole-cli ffmpeg
  2. GPU 版本编译参考
  3. BtbN/FFmpeg-Builds
  4. ffmpeg 功能特性与依赖库关系对照表
  5. nginx coturn socat privoxy opencv 静态编译
posted @ 2023-08-06 15:50  jingjingxyk  阅读(280)  评论(0编辑  收藏  举报