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

文章目录

    • 背景
    • 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. 更新依赖
pacman -Syu # 重启shell多来几遍,直到没有东西可更新
pacman -S make yasm pkg-config mingw-w64-x86_64-gcc
  1. 很好,configure的时候gg。
# 反向操作下,把静态库都打进exe里面
./configure --prefix=/usr/local --disable-shared --enable-static -disable-doc

错误1: ./configure: line 1773: cmp: command not found 解决pacman -S diffutils
5. 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一致了。当然,肯定会有一定的坑存在,遇到再说吧, 事不宜迟,还是想想下午吃什么吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/42818.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux-学习-05-openssl安装与卸载

目录 一、环境信息 二、卸载步骤 1、使用包管理器卸载 三、安装步骤 1、下载OpenSSL源代码 2、解压并进入目录 3、配置、编译和安装 4、更新软链接 5、更新共享库缓存 6、/etc/profile添加环境变量 7、环境变量生效 8、openSSL版本验证 一、环境信息 名称值CPUInte…

【人工智能】-- 智能家居

个人主页:欢迎来到 Papicatch的博客 课设专栏 :学生成绩管理系统 专业知识专栏: 专业知识 文章目录 🍉引言 🍉基于深度卷积神经网络的表情识别 🍈流程图 🍈模型设计 🍍网络架…

[图解]企业应用架构模式2024新译本讲解24-标识映射3

1 00:00:00,460 --> 00:00:02,580 超类定义了一个抽象方法 2 00:00:03,170 --> 00:00:03,450 3 00:00:06,410 --> 00:00:09,690 把reader内容 4 00:00:10,870 --> 00:00:12,350 把它变成一个领域对象 5 00:00:13,690 --> 00:00:15,800 但这里只是把它变成一个…

python安装PyTorch+cuda

1,最终结果 import torchprint(torch.cuda.is_available()) #显示True,则安装成功 print(torch.__version__)#打印当前PyTorch版本号。 print(torch.version.cuda)#打印当前CUDA版本号。 print(torch.backends.cudnn.version())# 打印当前cuDNN版本号。 print(torc…

Ruby 语法

Ruby 语法 Ruby 是一种动态、开放源代码的编程语言,由日本的松本行弘(Yukihiro Matsumoto)于1995年开发。Ruby 的设计哲学强调简洁和效率,同时也是一种表达力强的语言。它结合了多种编程语言的特性,包括 Perl、Smalltalk、Eiffel、Ada 和 Lisp。Ruby 的语法简单直观,使得…

【爱上C++】vector用法详解

文章目录 一:vector简介二:vector的创建和初始化三:vector的遍历1.[]下标2.at()3.迭代器遍历4.范围for 四:vector的空间1.size2.max_size3.capacity4.reserve5.resize6.empty 五:vector的增删查改1.push_back2.pop_back3.find4.insert5.erase6.swap7.assign Hello~同学们好&…

mAP(平均精度均值)全面解读:评估目标检测性能的黄金标准

mAP(平均精度均值)全面解读:评估目标检测性能的黄金标准 在目标检测领域,评估模型性能是至关重要的一步。mAP(mean Average Precision,平均精度均值)作为目标检测任务中一个关键的性能评估指标…

搭建纯净的SpringBoot工程

pom文件 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVe…

docker nginx mysql redis

启动没有数据卷的nginx docker run -d -p 86:80 --name my-nginx nginx把/etc/nginx中的配置复制到宿主机 docker cp my-nginx:/etc/nginx /home/nginxlkl把/html 中的文件复制到宿主机 docker cp my-nginx:/etc/nginx /home/nginxlkl删除当前镜像 docker rm -f my-nginx重新起…

ArrayList,Vector, LinkedList的存储性能和特性举例说明

ArrayList、Vector、LinkedList是Java中常用的三种集合类型&#xff0c;它们各自具有不同的存储性能和特性。下面将分别举例说明这三种集合的存储性能和特性&#xff1a; ArrayList 存储性能与特性&#xff1a; 底层实现&#xff1a;ArrayList底层是通过数组实现的&#xff…

Solidity:变量数据存储和作用域 storage/memory/calldata

Solidity中的引用类型​ 引用类型(Reference Type)&#xff1a;包括数组&#xff08;array&#xff09;和结构体&#xff08;struct&#xff09;&#xff0c;由于这类变量比较复杂&#xff0c;占用存储空间大&#xff0c;我们在使用时必须要声明数据存储的位置。 数据位置​ …

HarmonyOS ArkUi 字符串<展开/收起>功能

效果图&#xff1a; 官方API&#xff1a; ohos.measure (文本计算) 方式一 measure.measureTextSize 跟方式二使用一样&#xff0c;只是API调用不同&#xff0c;可仔细查看官网方式二 API 12 Preview Component export struct CustomTextSpan {State maxLines: number 1/…

迭代器模式(大话设计模式)C/C++版本

迭代器模式 C #include <iostream> #include <string> #include <vector>using namespace std;// 迭代抽象类,用于定义得到开始对象、得到下一个对象、判断是否到结尾、当前对象等抽象方法&#xff0c;统一接口 class Iterator { public:Iterator(){};virtu…

作为产品经理,如何用大模型给我们赋能?非常详细,收藏我这篇就够了

作为一名产品经理&#xff0c;如果您考虑转行至大模型领域&#xff0c;您将能够将产品管理技能与大模型技术相结合&#xff0c;从而在产品开发和创新方面获得一系列好处。以下是转行大模型对产品经理的一些潜在益处&#xff1a; 更深入的技术理解&#xff1a;了解大模型技术将…

LeetCode 1351, 1, 208

目录 1351. 统计有序矩阵中的负数题目链接标签简答二分查找思路代码 优化思路代码 1. 两数之和题目链接标签思路代码 208. 实现 Trie (前缀树)题目链接标签思路代码 1351. 统计有序矩阵中的负数 题目链接 1351. 统计有序矩阵中的负数 标签 数组 二分查找 矩阵 简答二分查找…

使用 Python 处理 Lumerical 导出的 .txt 文件(完结)

使用 Python 处理 Lumerical 导出的 .txt 文件 引言正文以 , 隔开的波长与透射率以 \t 隔开的波长与透射率引言 之前在 添加链接描述 一文中我们已经介绍了如何将 Lumerical 仿真中的 S 参数相关数据导出为 .txt 文件。这里我们来分享如何使用 Python 对这些数据进行处理。 正…

如果国产BI工具也有顶流,它们一定会上榜

在数据驱动的今天&#xff0c;商业智能&#xff08;BI&#xff09;工具已成为企业不可或缺的助手&#xff0c;它们通过强大的数据处理和分析能力&#xff0c;帮助企业洞察市场趋势&#xff0c;优化运营决策。如果BI工具界也有“顶流”&#xff0c;那么奥威BI、帆软BI&#xff0…

原生CSS变量

原生CSS 变量 css中我们可以统一设置 变量 方便页面维护 声明 变量声明的时候&#xff0c;变量名之前加上两根连词线&#xff08;–&#xff09;即可。例如&#xff1a; 声明的变量是有作用域的&#xff0c;比如是在html中声明的变量&#xff0c;那么该变量在html中的任何地方都…

我国甜菜碱行业规模较大 未来行业发展前景较好

我国甜菜碱行业规模较大 未来行业发展前景较好 甜菜碱化学名称三甲基甘氨酸&#xff0c;是一种在动植物体内广泛存在的季铵型生物碱。它具有多种生物学功能&#xff0c;包括渗透调节、甲基供体等&#xff0c;广泛应用于饲料、食品、医药和化妆品等行业。甜菜碱的提取主要来源于…

揭秘SmartEDA:电路仿真软件如何贯穿课前课中课后,助力电子学习新纪元!

在电子设计与自动化的学习道路上&#xff0c;一款强大的电路仿真软件往往能为学生们带来事半功倍的效果。今天&#xff0c;我们就来深入探讨一下SmartEDA这款电路仿真软件在课前、课中、课后的全方位应用&#xff0c;看看它如何助力我们的电子学习步入新纪元&#xff01; 1、课…