最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Windows下搭建FFmpeg開發(fā)調(diào)試環(huán)境的詳細步驟

 更新時間:2022年07月28日 15:20:28   作者:Suiyek's?Blog  
這篇文章主要介紹了Windows下搭建FFmpeg開發(fā)調(diào)試環(huán)境,本文以VS2017為例一步步介紹怎么搭建一個可供單步調(diào)試的FFmpeg項目,需要的朋友可以參考下

背景

如果你是一個FFmpeg的使用者,那么絕大部分情況下只需要在你的程序中引用FFmpeg的libav*相關的頭文件,然后在編譯階段鏈接相關的庫即可。

但是如果你想調(diào)試FFmpeg內(nèi)部相關的邏輯,或者分析FFmpeg源碼,那么有一個可供單步調(diào)試FFmpeg的環(huán)境往往能使你事半功倍!

要說Windows下做C/C++開發(fā)用哪個IDE最強大,我想我的答案是Visual Studio。

要說Windows下怎么快速構建FFmpeg的VS項目,我首推ShiftMediaProject(下面都簡稱 SMP)開源項目:SMP GitHub

關于ShiftMediaProject 的更多相關信息,大家可以直接訪問其官網(wǎng)。

步驟

接下來我將以VS2017為例

一步步介紹怎么搭建一個可供單步調(diào)試的FFmpeg項目

※ 注:在此之前請確保你電腦的網(wǎng)絡環(huán)境能正常訪問GitHub.

一、安裝VS 2017

先安裝VS 2017,安裝步驟非本文重點,此處不做贅述

但是有一點需要注意的是:安裝時需勾選C++環(huán)境和Windows SDK 8.1

二、安裝 YASM 與 NASM

由于FFmpeg的源碼有部分需要匯編支持,所以需要先安裝好YASM/NASM的VS版本,這一點SMP官方團隊也很貼心地幫我們做好:

先直接下載對應如下兩個鏈接的VSYASM.zipVSNASM.zip

https://github.com/ShiftMediaProject/VSNASM/releases

https://github.com/ShiftMediaProject/VSYASM/releases

下載完成后:

?? 解壓VSYASM.zip,右鍵install_script.bat選擇以管理員身份運行,等待安裝完成:

?? 解壓VSNASM.zip,右鍵install_script.bat選擇以管理員身份運行,等待安裝完成:

?? TL;DR

接下來的步驟會比較煩瑣,經(jīng)過多次實踐我已經(jīng)寫好了一鍵部署腳本,可供大家快速部署能直接編譯成功的項目。

如果不想理這些煩瑣的細節(jié),想直接使用一鍵部署腳本的讀者

?? 可直接跳到文章最后面的 一鍵部署腳本 章節(jié)

三、創(chuàng)建正確的目錄層次

我剛開始用SMP項目的時候總是對它的目錄層級結構感到困惑,編譯之后都找不著輸出目錄。

經(jīng)過多次踩坑實踐,再結合官方README的說明,實踐出比較好的目錄層次應該是如下:

- ffmpeg_smp_vs   // 假設你的項目文件夾叫 ffmpeg_smp_vs
  - source        // 創(chuàng)建source子文件夾,用于放SMP相關源碼
  - msvc          // 自動生成,存放SMP編譯生成的目標文件等

Q: 為什么要建立兩層目錄結構?

A: 因為SMP項目為了不讓生成的文件落在源碼目錄下造成“污染”,把輸出目錄定在源碼目錄同層級的msvc目錄下。

如果你直接把源碼下載到ffmpeg_smp_vs目錄下,會導致最后生成的msvc目錄跑到了ffmpeg_smp_vs目錄外面去,不是很美觀。

因此,把源碼目錄和生成目錄都放在統(tǒng)一的ffmpeg_smp_vs目錄下是比較好的實踐。

四、下載源碼和相關依賴

假設你已經(jīng)按步驟三創(chuàng)建好了相應的文件夾

就可以開始下載SMP源碼及其相關依賴了

注:以下操作均在Windows CMD命令行工具中執(zhí)行

※ 下載SMP源碼:

cd ffmpeg_smp_vs\source
git clone https://github.com/ShiftMediaProject/FFmpeg.git

※ 運行腳本下載相關依賴庫:

cd ffmpeg_smp_vs\source\FFmpeg\SMP
project_get_dependencies.bat /Y

下載的依賴庫比較多,請耐心等待。若中途有出現(xiàn)錯誤或者中斷,請再次執(zhí)行上面最后一句腳本直到所有依賴庫都順利下載完成。

※ 下載第三方庫的頭文件:

?? AMF 頭文件

先獲得AMF倉庫代碼

https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git

再把 AMF\amf\public\include\ 下的所有子文件夾復制到 ffmpeg_smp_vs\msvc\include\AMF 下(目錄不存在的話請自行創(chuàng)建)

?? ffnvcodec 頭文件

先獲得ffnvcodec倉庫代碼

git clone https://github.com/FFmpeg/nv-codec-headers.git

再把 nv-codec-headers\include\ffnvcodec\ 下的所有頭文件復制到 ffmpeg_smp_vs\msvc\include\ffnvcodec 下(目錄不存在的話請自行創(chuàng)建)

?? OpenGL 頭文件

下載如下2個頭文件放置到ffmpeg_smp_vs\msvc\include\gl下(目錄不存在的話請自行創(chuàng)建)

https://www.khronos.org/registry/OpenGL/api/GL/glext.h

https://www.khronos.org/registry/OpenGL/api/GL/wglext.h

?? EGL 頭文件
下載下面這個頭文件放置到ffmpeg_smp_vs\msvc\include\KHR下(目錄不存在的話請自行創(chuàng)建)

https://www.khronos.org/registry/EGL/api/KHR/khrplatform.h

五、編譯與調(diào)試

※ 編譯

進入文件夾:ffmpeg_smp_vs\source\FFmpeg\SMP

雙擊打開ffmpeg_deps.sln

右鍵整個解決方案 -> 點擊生成解決方案

編譯較耗時,請耐心地等待編譯完成 ? ..

若編譯失敗,請仔細檢查前面的步驟,或者給我留言

※ 調(diào)試

由于SMP默認調(diào)試目標路徑設置有誤(至少截止我寫這篇文章的時候是這樣 | 2021/12/09),所以我們需要修改一下三個可執(zhí)行文件ffmpeg/ffprobe/ffplay的調(diào)試路徑,以ffmpeg為例(另外2個都是這么改):

?? 右鍵Programs目錄下的ffmpeg -> 選屬性

?? 將配置屬性->調(diào)試->命令 一行的$(TargetPath)修改為:$(OutDir)\bin\x64\$(TargetName)$(TargetExt)

?? 以調(diào)試ffmpeg為例,將ffmpeg設置為啟動項目

?? 在ffmpeg.cmain()函數(shù)入口處打好斷點,按F5開啟愉快的調(diào)試學習之旅~

關于Visual Studio的調(diào)試技巧非本文重點,請自行搜索

?? 一鍵部署腳本

為方便大家快速部署一個可成功編譯的FFmpeg VS 2017項目,避免在各種配置上踩坑浪費時間,我寫了個一鍵部署的腳本供大家使用,前提是你要完成上述的步驟一和步驟二再進行這一步。

?? 先下載下面?zhèn)}庫:

git clone https://github.com/Suiyek/OneKeySetupSMP.git

?? 創(chuàng)建你的工程目錄,如D:\Code\ffmpeg_smp_vs

?? 把init_smp_proj.bat復制到你的工程目錄下

?? 雙擊運行腳本,等待運行完成

?? 好了,接下來只需要參考步驟五即可

到此這篇關于Windows下搭建FFmpeg開發(fā)調(diào)試環(huán)境的文章就介紹到這了,更多相關Windows FFmpeg環(huán)境搭建內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • c++下使用windows api遍歷指定文件夾及其子文件夾中的文件

    c++下使用windows api遍歷指定文件夾及其子文件夾中的文件

    這篇文章主要介紹了c++下使用windows api遍歷指定文件夾及其子文件夾中的文件實現(xiàn)代碼,一般都是通過c++自帶的函數(shù)實現(xiàn)
    2021-07-07
  • Windows的鉤子機制詳解

    Windows的鉤子機制詳解

    這篇文章主要介紹了Windows的鉤子機制,對于初學者進一步了解windows程序設計中鉤子的原理及運用有很大的幫助,需要的朋友可以參考下
    2014-07-07
  • 詳解C++中的this指針與常對象

    詳解C++中的this指針與常對象

    這篇文章主要介紹了詳解C++中的this指針與常對象,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2015-09-09
  • QT實現(xiàn)五子棋游戲

    QT實現(xiàn)五子棋游戲

    這篇文章主要為大家詳細介紹了QT實現(xiàn)五子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • C語言常見的指針筆試題解析

    C語言常見的指針筆試題解析

    在我們學習指針之后,應該在實際應用中去理解和掌握它,畢竟實踐才是檢驗真理的唯一標準,我們以后在找工作的過程中免不了會遇到與指針相關的試題,本篇文章可以幫助我們提前了解一些常見的指針考點,需要的可以了解一下
    2022-10-10
  • QT實現(xiàn)簡單打地鼠游戲

    QT實現(xiàn)簡單打地鼠游戲

    這篇文章主要為大家詳細介紹了QT實現(xiàn)簡單打地鼠游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C++?LeetCode542矩陣示例詳解

    C++?LeetCode542矩陣示例詳解

    這篇文章主要為大家介紹了C++?LeetCode542矩陣示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • C++設置系統(tǒng)時間及系統(tǒng)時間網(wǎng)絡更新的方法

    C++設置系統(tǒng)時間及系統(tǒng)時間網(wǎng)絡更新的方法

    這篇文章主要介紹了C++設置系統(tǒng)時間及系統(tǒng)時間網(wǎng)絡更新的方法,涉及網(wǎng)絡程序設計與系統(tǒng)函數(shù)的使用,需要的朋友可以參考下
    2014-10-10
  • Qt實現(xiàn)卡牌對對碰游戲(附demo)

    Qt實現(xiàn)卡牌對對碰游戲(附demo)

    本文主要介紹了Qt實現(xiàn)卡牌對對碰游戲,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-10-10
  • C語言植物大戰(zhàn)數(shù)據(jù)結構堆排序圖文示例

    C語言植物大戰(zhàn)數(shù)據(jù)結構堆排序圖文示例

    這篇文章主要為大家介紹了C語言植物大戰(zhàn)數(shù)據(jù)結構堆排序的圖文示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05

最新評論

克什克腾旗| 藁城市| 温宿县| 多伦县| 达孜县| 安达市| 潜江市| 探索| 苍南县| 左贡县| 明星| 长沙县| 金堂县| 台北县| 交口县| 和林格尔县| 土默特右旗| 内黄县| 佛山市| 嘉鱼县| 海城市| 西城区| 皋兰县| 肇庆市| 连云港市| 崇仁县| 吴桥县| 清原| 金坛市| 吴忠市| 江安县| 齐齐哈尔市| 塔河县| 沙田区| 西乡县| 大庆市| 丽江市| 如东县| 汉寿县| 荃湾区| 霸州市|