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

Win11+?VS2022編譯?FFmpeg6.0?靜態(tài)庫的詳細(xì)過程

 更新時間:2023年08月18日 09:04:31   作者:Dionysius  
這篇文章主要介紹了Win11+VS2022編譯FFmpeg6.0靜態(tài)庫的方法,本文通過圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

編譯前言

編譯作為自己持有的穩(wěn)定版本 用來練習(xí),網(wǎng)上的編譯環(huán)境太雜太亂了,目前有個開源項目致力解決ffmpeg編譯的問題,暫時拿來用,如果這個項目不維護(hù)或者壞了,再考慮其他。

為什么項目編譯?

編譯作為自己持有的穩(wěn)定版本 用來練習(xí)

前期準(zhǔn)備

使用github 上 開源項目的解決方案編譯

ShiftMediaProject

環(huán)境配置

先創(chuàng)建代碼目錄,作者建議的。

*OutputDir is the "Output Directory" specified in the project properties. 
The default value of OutputDir is "..\..\msvc" relative to the FFmpeg source directory. An example of the expected 
directory structure is:
    -  msvc          (OutputDir)
    -> source
        - FFmpeg
        - ..Any other libraries source code..

進(jìn)入 source 目錄打開git bash 克隆代碼

這里因?yàn)槲乙呀?jīng)git 拉到本地過了,所以報錯,不影響。

ffmpeg外部庫

代碼拉取完畢后 ,如果一切順利, /vs2022/source/FFmpeg/SMP 目錄可以查看readme.txt,里面介紹了如何編譯配置整個項目,包括外部庫:x264、x264、vpx等,可以使用腳本下載,路徑 vs2022\source\FFmpeg\SMP\project_get_dependencies.bat ,感興趣可以看一下他這個bash腳本,它會按照腳本中配置的外部庫名字按順序拉取。如果萬一下載失敗 ,可以根據(jù)輸出日志跟腳本內(nèi)容排查問題,手動下載或者重新運(yùn)行腳本。運(yùn)行情況如下:

好了經(jīng)過漫長的下載與數(shù)次 .//project_get_dependencies.bat ,所有的庫也都下下來了。

額外的編譯選項-for渲染

根據(jù) readme.txt 先在 /vs2022/msvc/ 下創(chuàng)建 include 目錄,include里創(chuàng)建 gl 、 AMF 兩個目錄,用來放 opengl 、 nv-codec 、 AMF 的頭文件。

git clone https://github.com/KhronosGroup/OpenGL-Registry.git
git clone https://github.com/KhronosGroup/EGL-Registry.git
git clone https://github.com/FFmpeg/nv-codec-headers.git
git clone https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git

opengl (需要glext)

a. OpenGL-Registry\api\GL\ 里的 glext.h wglext.h 放入 /vs2022/msvc/include/gl/

b. EGL-Registry\api\KHR 將KHR整個文件夾放入 /vs2022/msvc/include/

ffnvcodec (需要nv-codec-headers)

a. nv-codec-headers\include 里的ffnvcodec目錄復(fù)制到 /vs2022/msvc/include

AMF sdk頭文件

a. AMF\amf\public\include 里的兩個文件夾復(fù)制到 /vs2022/msvc/include/AMF

編譯工具鏈

配置 NASM 、 YASM ,這兩個是匯編的編譯工具

nasm

git clone https://github.com/ShiftMediaProject/VSNASM/releases/download/0.9/VSNASM.zip

yasm

git clone https://github.com/ShiftMediaProject/VSYASM/releases/download/0.7/VSYASM.zip

同樣我們查看腳本可知它會根據(jù)不同VS的大版本去做適配安裝,我們的是VS2022,vs17,如果有報錯可以往這方面去排查。執(zhí)行安裝

開始編譯

到這一步,所有的準(zhǔn)備工作基本完成,打開工程文件 FFMpeg/SMP/ffmpeg_deps.sln

step1. 選擇編譯類型 Debug/Release Dll/lib

這里我們先選擇的Debug,因?yàn)橹皇蔷毩?xí)用,需要調(diào)試什么的。接下來就是直接生成了,生成時間稍微有點(diǎn)長,我這里10分鐘左右,而且中間果不其然出現(xiàn)了錯誤。讓我們來分析一下:在libavcodec 編譯的過程中提示找不到好幾個宏 都是NV_ENC_PARAMS打頭的,我們找一下他的同類型,大概是這么一個枚舉類型

,這里我們替換一下ffnvcode的版本,退回到5月份的版本,跟ffmpeg6r1保持一致

重新生成就能成功了。

lib庫在`/msvc/lib/x64下面,我們可以看到生成的各種lib庫

step2. 打包SDK

把上述生成的include、lib打包帶走,直接放到應(yīng)用的項目下就可以直接用了

驗(yàn)證

#ifndef __FFPLAYER_H__
#define __FFPLAYER_H__
#include <iostream> 
extern "C" {
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libswscale/swscale.h"
#include "libswresample/swresample.h"
#include "libavutil/avassert.h"
#include "libavutil/error.h"
#include "libavutil/avutil.h"
#include "libavutil/ffversion.h"
#include "libavutil/imgutils.h"
#include "libavutil/channel_layout.h"
#include "libavutil/opt.h"
#include "libavutil/mathematics.h"
#include "libavutil/timestamp.h"
}
#include <Windows.h>
#include <string.h>
#include <math.h>
#ifdef _DEBUG
#pragma comment(lib, "libavformatd.lib")
#pragma comment(lib, "libavutild.lib"
#pragma comment(lib, "libavcodecd.lib")
#pragma comment(lib, "libavdeviced.lib")
#pragma comment(lib, "libavfilterd.lib")
#pragma comment(lib, "libswscaled.lib")
#pragma comment(lib, "libswresampled.lib")
#else
#pragma comment(lib, "libavformat.lib")
#pragma comment(lib, "libavutil.lib")
#endif
...
...
...
#endif  //__FFPLAYER_H__

結(jié)果如下,我們在這里輸出了ffmpeg的編譯配置,可以看到 其他的一些基礎(chǔ)庫都是 enable 的狀態(tài),說明都編進(jìn)去了,本次編譯宣告成功。如需要在項目中使用到這些外部庫諸如x265之類的,在項目中加上這些庫的lib連接就可以。

結(jié)尾

如果上述方式失效了,要回到手動編譯配置的老路子,臟路子,也不用慌,相信經(jīng)過這些配置編譯的歷程,作為開發(fā)者的您也能輕松應(yīng)對,處變不驚,將正確的東西放到正確的籃子里面。

最后,祝您在開發(fā)者波瀾壯闊的coding生活里一切順利~

本文原創(chuàng)https://macrocyborg.site/article/07ab4b09-2b01-42c4-8faf-6c15c70b368a

參考鏈接

1.CSDN令狐掌門

2.Shift Media Project

3.FFMPEG官方git倉庫

到此這篇關(guān)于Win11+ VS2022編譯 FFmpeg6.0 靜態(tài)庫的文章就介紹到這了,更多相關(guān)VS2022編譯 FFmpeg6.0 靜態(tài)庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++語言pow函數(shù)的具體使用

    C++語言pow函數(shù)的具體使用

    本文主要介紹了C++語言pow函數(shù)的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • C++變量和基本類型詳解

    C++變量和基本類型詳解

    這篇文章主要介紹了C++變量和基本類型,,一定要注意局部變量與全局變量的作用范圍,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-10-10
  • 詳解c++ 繼承

    詳解c++ 繼承

    這篇文章主要介紹了c++ 繼承的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 基于樹莓派實(shí)現(xiàn)播放MP3音樂

    基于樹莓派實(shí)現(xiàn)播放MP3音樂

    這篇文章主要為大家詳細(xì)介紹了基于樹莓派實(shí)現(xiàn)播放MP3音樂,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • C語言實(shí)現(xiàn)登錄注冊和忘記密碼功能

    C語言實(shí)現(xiàn)登錄注冊和忘記密碼功能

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)登錄、注冊和忘記密碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • 一文搞懂C++中string容器的構(gòu)造及使用

    一文搞懂C++中string容器的構(gòu)造及使用

    本文小編將帶大家學(xué)習(xí)最常見的一個引用類型——string容器,學(xué)習(xí)string容器的構(gòu)造、以及C++API中String類的常用方法,感興趣的可以了解一下
    2022-07-07
  • C++實(shí)現(xiàn)簡易貪吃蛇游戲

    C++實(shí)現(xiàn)簡易貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡易貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C++程序操作文件對話框的方法

    C++程序操作文件對話框的方法

    這篇文章主要介紹了C++如何操作文件對話框,本文我們就來講述一下C++在操作文件夾對話框的相關(guān)細(xì)節(jié),給大家借鑒和參考,感興趣的朋友一起看看吧
    2022-06-06
  • C++發(fā)送郵件實(shí)現(xiàn)代碼

    C++發(fā)送郵件實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了C++發(fā)送郵件的實(shí)現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 利用OpenCV實(shí)現(xiàn)綠幕視頻背景替換

    利用OpenCV實(shí)現(xiàn)綠幕視頻背景替換

    這篇文章主要介紹了如何利用OpenCV實(shí)現(xiàn)綠幕視頻背景替換功能,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)OpenCV有一定的幫助,感興趣的可以學(xué)習(xí)一下
    2022-01-01

最新評論

彭阳县| 噶尔县| 正宁县| 关岭| 乐亭县| 泰州市| 监利县| 临沧市| 沙坪坝区| 旅游| 杭锦旗| 清原| 崇文区| 千阳县| 扶风县| 洪湖市| 常州市| 隆林| 嘉禾县| 岳西县| 临猗县| 合川市| 东港市| 大新县| 杨浦区| 自贡市| 海城市| 双流县| 巍山| 武陟县| 昌都县| 竹溪县| 紫云| 桐乡市| 宁陕县| 尤溪县| 敦煌市| 永康市| 张掖市| 固阳县| 鹰潭市|