【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一致了。当然,肯定会有一定的坑存在,遇到再说吧, 事不宜迟,还是想想下午吃什么吧。

相关推荐
Sheep Shaun11 分钟前
揭开Linux的隐藏约定:你的第一个文件描述符为什么是3?
linux·服务器·ubuntu·文件系统·缓冲区
生活很暖很治愈29 分钟前
Linux——环境变量PATH
linux·ubuntu
予枫的编程笔记2 小时前
【Linux入门篇】Ubuntu和CentOS包管理不一样?apt与yum对比实操,看完再也不混淆
linux·人工智能·ubuntu·centos·linux包管理·linux新手教程·rpm离线安装
匆匆那年9674 小时前
llamafactory推理消除模型的随机性
linux·服务器·学习·ubuntu
wypywyp13 小时前
8. ubuntu 虚拟机 linux 服务器 TCP/IP 概念辨析
linux·服务器·ubuntu
阿蒙Amon13 小时前
TypeScript学习-第10章:模块与命名空间
学习·ubuntu·typescript
No8g攻城狮14 小时前
【Linux】Windows11 安装 WSL2 并运行 Ubuntu 22.04 详细操作步骤
linux·运维·ubuntu
森G17 小时前
七、04ledc-sdk--------makefile有变化
linux·c语言·arm开发·c++·ubuntu
Echo_NGC223718 小时前
【FFmpeg 使用指南】Part 3:码率控制策略与质量评估体系
人工智能·ffmpeg·视频·码率
生活很暖很治愈19 小时前
Linux——孤儿进程&进程调度&大O(1)调度
linux·服务器·ubuntu