【ffmpeg系列一】源码构建,ubuntu22与win10下的过程对比。

文章目录

背景

顺手编译个ffmpeg试试,看看不同平台下谁的配置比较繁琐。

先让gpt给出个教程:

ubuntu22

使用elementary-os7.1构建,看看有几个坑要踩。

  • 错误1: 依赖libavresample-dev未找到, 先无视。
  • 错误2:没有nasm/yasm, 直接禁用这个特性。./configure --prefix=/usr/local --enable-shared --disable-static --disable-x86asm
  • 警告3:apt install pkg-config解决。
  • 错误4:好吧,动态库成为了阻碍。

    解决方法:
    修改文件/etc/ld.so.conf, 内容追加一行 /usr/local/ffmpeg/lib/

    使修改生效, 执行sudo /sbin/ldconfig

最终成功 执行 ffmpeg -version, 这是个啥版本呢(可能是nightly吧)。还有这ffmpeg就是个壳的感觉。

结论

2核的奔腾 + 虚拟机 debuff *2 , 不到半小时搞定, 还是比较快的。

ubuntu22把该有的依赖都提前预置了。

win10

不考虑子系统, 因为我打算构建exe程序。 所以使用msys2。

让gpt告诉我们新的步骤。其实过程和上面的一样。

过程

  1. 下载 https://www.msys2.org/ , 安装最新版。
  2. ms,启动
  3. 更新依赖
shell 复制代码
pacman -Syu # 重启shell多来几遍,直到没有东西可更新
pacman -S make yasm pkg-config mingw-w64-x86_64-gcc
  1. 很好,configure的时候gg。
bash 复制代码
# 反向操作下,把静态库都打进exe里面
./configure --prefix=/usr/local --disable-shared --enable-static -disable-doc

错误1: ./configure: line 1773: cmp: command not found 解决pacman -S diffutils

  1. make

有个我的疏忽, 如果你是2核心4线程的cpu, 那么应该make -j4而不是2, 不然cpu跑不满

成功编译出ffmpeg.exe, 打印ffmpeg -version 试试

但是,离开msys2环境, 在cmd中运行, 就缺少dll了。那就直接从msys2安装目录复制就行

最后试试从 flv视频流中提取 一帧 输出为图片, 没毛病,工作正常。

复制代码
.\ffmpeg -i https://sample-videos.com/video321/flv/720/big_buck_bunny_720p_1mb.flv -frames:v 1 -q:v 2 output.jpg

至于如何把这两个dll集成进ffmpeg.exe, 下一期再研究。

对比结论

就ffmpeg编译过程而言, 似乎windows上更顺利些, 遇到的坑比较少,但是win10下 ./configure慢很多, 不知为何。

其实吧, msys2 + mingw64 + pacman ,体验几乎和linux一致了。当然,肯定会有一定的坑存在,遇到再说吧, 事不宜迟,还是想想下午吃什么吧。

相关推荐
Silence4Allen1 小时前
Ubuntu 安装WPS Office
linux·ubuntu·wps
313YPHU35 小时前
【音视频开发】第五章 FFmpeg基础
ffmpeg·音视频
MobiCetus7 小时前
Linux Kernel 9
java·linux·运维·服务器·windows·ubuntu·gnu
卷不动的打工仔8 小时前
Ubuntu利用docker搭建Java相关环境记录(二)
java·ubuntu·docker
卷不动的打工仔9 小时前
Ubuntu利用docker搭建Java相关环境问题记录
java·ubuntu·docker
陈阳羽10 小时前
MongoServerError: Authentication failed.处理办法
ubuntu·mongo
杭州杭州杭州1 天前
ubuntu 18.04安装tomcat,zookeeper,kafka,hadoop,MySQL,maxwell
hadoop·mysql·ubuntu·zookeeper·kafka·tomcat
深夜面包1 天前
Ubuntu 安装与配置 Docker
linux·ubuntu·docker
肯德基疯狂星期四-V我501 天前
【Ubuntu】【树莓派】Linux系统的远程终端登录、远程图形桌面访问、 X图形窗口访问和文件传输操作
linux·运维·ubuntu·树莓派
CAE虚拟与现实1 天前
Ubuntu中snap
linux·运维·ubuntu·apt·wsl·wsl2·snap