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

相关推荐
有谁看见我的剑了?2 小时前
Ubuntu 22.04.5 配置vlan子接口和网桥
服务器·网络·ubuntu
hunandede3 小时前
FFmpeg 4.3 音视频-多路H265监控录放C++开发十三:将AVFrame转换成AVPacket。视频编码,AVPacket 重要函数,结构体成员学习
c++·ffmpeg·音视频
橘子味的茶二3 小时前
SDL读取PCM音频
ffmpeg·音视频·pcm
wowocpp6 小时前
查看 linux ubuntu 分区 和 挂载 情况 lsblk
linux·运维·ubuntu
wowocpp6 小时前
查看 磁盘文件系统格式 linux ubuntu blkid ext4
linux·数据库·ubuntu
不是笨小孩i12 小时前
开源AI图片处理工具HivisionIDPhotos安装与证件照制作指南
ubuntu
lihuhelihu13 小时前
第3章 CentOS系统管理
linux·运维·服务器·计算机网络·ubuntu·centos·云计算
零意@14 小时前
ubuntu切换不同版本的python
windows·python·ubuntu
饮啦冰美式17 小时前
22.04Ubuntu---ROS2使用rclcpp编写节点
linux·运维·ubuntu