FFmpeg開發筆記(二)搭建Windows系統的開發環境

来源:https://www.cnblogs.com/aqi00/archive/2023/04/29/17363751.html
-Advertisement-
Play Games

以前寫的C++基本都是C with STL,大多是面向過程的演算法題,或者比較小的項目,然後經常報各種編譯錯誤(對編譯原理不熟),經常把人搞到崩潰,搞不懂構建、鏈接之類的東西。 現在開始記錄一下XMake的學習筆記,記錄一些學習過程中踩的坑,在這篇文章,你將學習到Windows下利用MSYS2進行Mi ...


由於Linux系統比較專業,個人電腦很少安裝Linux,反而大都安裝Windows系統,因此提高了FFmpeg的學習門檻,畢竟在Windows系統搭建FFmpeg的開發環境還是比較麻煩的。
不過若有已經編譯好的Windows版本FFmpeg開發包,那就免去了繁瑣的Windows編譯過程,所以直接安裝已編譯的FFmpeg開發包,還是相對容易的。在Windows系統安裝FFmpeg之前,要先安裝MSYS2。
一、安裝MSYS2​
MSYS2允許在Windows系統模擬Linux環境,它的命令行界面可以很好地模擬Linux終端,所以在Windows系統上編譯和執行FFmpeg程式都要通過MSYS2的控制台操作。以下是在Windows系統安裝MSYS2的步驟說明。
1、到這個網址下載MSYS2的安裝包 https://github.com/msys2/msys2-installer/releases/,打開該頁面後單擊Assets文字以便展開安裝包列表,接著單擊MSYS2的Windows安裝包鏈接,比如msys2-x86_64-20230318.exe,瀏覽器就開始下載Windows版本的安裝文件。
2、雙擊下載好的msys2-x86_64-20230318.exe,根據安裝嚮導的指引一步一步完成安裝Windows版本的MSYS2。
3、MSYS2安裝完畢,打開安裝目錄下的msys2_shell.cmd,去掉該文件第17行代碼的註釋,也就是刪除關鍵字rem,修改之後的代碼如下所示:

set MSYS2_PATH_TYPE=inherit

 

之所以把該行代碼去掉註釋,是因為要讓MSYS2繼承Windows系統的Path環境變數,否則後面編譯會報錯。
4、依次選擇Windows開始菜單的“Windows系統”——“命令提示符”,打開Windows的命令行界面。接著先進入msys64目錄,再打開MSYS2的命令行視窗,也就是依次執行以下命令:

cd E:\msys64
msys2_shell.cmd -mingw64

 

之所以要在msys2_shell.cmd後面添加“ -mingw64”,是為了讓MinGW運行於64位模式,而非預設的32位模式。MinGW允許在Windows系統執行Linux的編譯命令。如果說MSYS2相當於Windows環境的Linux模擬器,那麼MinGW給MSYS2準備了32位和64位兩套編譯器,而我們的目標是在Windows系統模擬64位的Linux開發環境。
5、雖然安裝完了MSYS2,可是一開始裡面只支持cd和ls等基本命令,竟然連gcc和make這些編譯命令都沒有,因此要先給它安裝常用的編譯工具。在MSYS2的命令行輸入以下命令安裝幾個編譯工具:

pacman -S gcc make nasm pkg-config diffutils zlib vim

 

pacman在安裝過程中會提示[Y/n]確認是否繼續安裝,此時輸入Y確定安裝即可。等待pacman將編譯工具安裝完畢,會在mingw64\bin下麵找到相應的可執行程式了。如果在打開MSYS2視窗時,msys2_shell.cmd命令後面沒加“ -mingw64”,那麼編譯工具會預設裝到mingw32\bin目錄;只有在msys2_shell.cmd命令後面加上“ -mingw64”,編譯工具才會裝到mingw64\bin目錄。
二、安裝FFmpeg
安裝好了MSYS2,再來安裝FFmpeg,具體的安裝步驟說明如下:
1、到這個網址下載Windows環境編譯好的FFmpeg安裝包https://github.com/BtbN/FFmpeg-Builds/releases,比如ffmpeg-master-latest-win64-gpl-shared.zip。
2、把ffmpeg-master-latest-win64-gpl-shared.zip解壓到指定目錄,並將解壓後的目錄改名為ffmpeg,比如E:\Program Files\ffmpeg。
3、編輯Windows系統變數列表裡的Path變數,給它添加兩個目錄,第一個是FFmpeg的可執行程式及其動態庫目錄,比如E:\Program Files\ffmpeg\bin;第二個是MSYS2的可執行程式目錄,比如E:\msys64\usr\bin。之所以給Path變數添加這兩個目錄,是為了在命令行輸入相關命令時,Windows能夠自動找到對應的可執行程式。
4、在MSYS2的控制台執行以下命令查看FFmpeg的版本信息:

ffmpeg -version

 

發現控制台回顯如下所示的FFmpeg版本與編譯器版本信息,說明FFmpeg程式成功跑起來了。

ffmpeg version 5.1.2 Copyright (c) 2000-2022 the FFmpeg developers
Built with gcc 12.2.0 (Rev4, Built by MSYS2 project)

 

​三、編寫測試程式
關於C語言的代碼驗證,可採用上一篇文章介紹的測試代碼及其編譯命令,這裡不再贅述了。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 簡介 模板方法模式(Template Method Pattern)也叫模板模式,是一種行為型模式。它定義了一個抽象公開類,包含基本的演算法骨架,而將一些步驟延遲到子類中,模板方法使得子類可以不改變演算法的結構,只是重定義該演算法的某些特定步驟。不同的子類以不同的方式實現這些抽象方法,從而對剩餘的邏輯有不 ...
  • 轉載請註明 來源:http://www.eword.name/ Author:eword Email:[email protected] 安裝Python 一、查詢是否安裝了Python及安裝路徑 #查看當前Python版本 python --version Python 2.7.16 #查看當前所有 ...
  • B/S結構系統的會話機制(session) 每博一文案 你跑得快,22歲有個家,身邊全是贊嘆,你跑得慢,30歲還在路上追求夢想。有的人為了車,房拼了一輩子, 有的人買輛摩托車走遍了大好江山。你想成為怎樣的人,過怎樣的生活,只要你不後悔就行。 並不是所有人都能在早上七點鐘起床的,也別拿一碗飯來衡量一個 ...
  • 本文首發於公眾號:Hunter後端 原文鏈接:Django筆記三十三之緩存操作 這一節介紹一下如何在 Django 中使用 redis 做緩存操作。 在 Django 中可以有很多種方式做緩存,比如資料庫,比如伺服器文件,或者記憶體,這裡介紹用的比較多的使用 redis 作為緩存。 這篇筆記主要內容如 ...
  • 大部分程式員走入編程世界第一個學習的語言就是C語言。 作為一門古老的編程語言,c語言擁有48年的發展歷程。 為什麼要學習 C語言? C語言是學習電腦程式設計語言的入門語言。最全面的編程面試網站 C語言是一門偏底層的語言,學好它,可以讓你更好的瞭解電腦。 學會了C語言,你就能學習現在任何的高級編程 ...
  • 在前幾篇文章中`LyShark`通過多種方式實現了驅動程式與應用層之間的通信,這其中就包括了通過運用`SystemBuf`緩衝區通信,運用`ReadFile`讀寫通信,運用`PIPE`管道通信,以及運用`ASYNC`反向通信,這些通信方式在應對`一收一發`模式的時候效率極高,但往往我們需要實現一次性... ...
  • P6818 [PA2013]Działka 前言 我太菜了。。。。 對著 jiangly 大佬的題解研究了一下午研究了一下午才搞出來(淚目。 作為一個蒟蒻,我就詳細的講一下我對與本題的理解。 題意 本題的的題意描述的還是比較明瞭。 在二維坐標系中,輸入 $n$ 個點 $m$ 次詢問, 每次詢問,給出 ...
  • 測試環境 Python 3.6.2 代碼實現 非多線程場景下使用 新建並保存EXCEL import win32com.client from win32api import RGB def save_something_to_excel(result_file_path): excel_app = ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...