【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.pswp.cn/diannao/42818.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/42818.shtml
英文地址,請注明出處:http://en.pswp.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、課…