日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

2019编译ffepeg vs_如何在windows10下使用vs2017编译最新版本的FFmpeg和ffplay

發布時間:2023/12/10 windows 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2019编译ffepeg vs_如何在windows10下使用vs2017编译最新版本的FFmpeg和ffplay 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

該文章描述了如何在windows10 64位系統下面編譯出FFmpeg的庫及其自帶的ffplay播放器,而且全部采用最新的版本,這樣我們可以在vs2017的ide下調試ffplay,能使我們更容易學習FFmpeg的架構以及音視頻播放器的原理。

步驟:

1.安裝vs2017

在https://visualstudio.microsoft.com/zh-hans/downloads/下載vs2017的社區版,執行安裝程序后進入下面界面,選擇如圖所示的幾個項目安裝就行了。安裝后可得到msvc的交叉編譯環境,該toolchain用于在msys2下編譯FFmpeg。我這里的安裝路徑是"C:\Program Files (x86)\Microsoft Visual Studio"

2.安裝msys2

在http://www.msys2.org/下載msys2,如下圖所示,因為我是64位的系統,所以選擇 msys2-x86_64-20180531.exe進行安裝下載。

3.下載ffmpeg源碼和SDL2源碼

在http://ffmpeg.org/download.html下載最新的FFmpeg代碼,我是使用git直接clone下最新的FFmpeg的源碼到本地的,當然也可以選擇直接下載打包好的源碼。我的FFmpeg的源碼目錄是D:\git\FFmpeg。

在http://www.libsdl.org/download-2.0.php下載SDL2的源碼,我選擇的源碼的zip包下載的,也就是SDL2-2.0.9.zip。我將其解壓到D盤,目錄是D:\SDL2-2.0.9

4.編譯SDL2生成SDL2的靜態庫和動態庫

啟動vs2017,導入D:\SDL2-2.0.9\VisualC下的解決方案,原解決方案是vs2010下的,導入過程中會升級到最新的平臺工具集。然后我們點擊SDL2和SDL2main兩個項目進行生成,編譯成功后會生成32位的SDL2的靜態庫和動態庫,位置在D:\SDL2-2.0.9\VisualC\Win32下面,其中的SDL2.dll,SDL2.lib,SDL2main.lib三個文件是我們編譯ffplay需要的。

上面還只是編譯出32位的SDL2的庫,如果要64位的庫,我們只需將編譯環境改成x64后對SDL2和SDL2main兩個項目進行生成,成功后的庫在D:\SDL2-2.0.9\VisualC\x64\Debug目錄下。

上面生成的庫是debug的庫,如果需要release的庫改一下編譯選項即可。

5.設置msys2的編譯環境

進入msys2的安裝路徑,我這里的路徑是D:\mysys64,編輯該目錄下的msys2_shell.cmd文件,在setlocal后加入一行

call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat"

該命令表示加載vs2017的32位交叉編譯環境,如果要編譯64位的庫則執行vcvars64.bat,也就是

call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"

6.編譯FFmpeg的靜態庫和動態庫

在步驟5設置好msys2的環境后執行msys2_shell.cmd,進入msys2的命令行模式,windows系統默認是gbk編碼,編譯過程中可能出現亂碼,需要修改該窗口的text為gbk編碼,右鍵點擊窗口選擇Options,再選擇Text,修改編碼為gbk,如下圖所示

進入FFmpeg的源碼目錄進行編譯,我這里是D:\git\FFmpeg,FFmpeg的配置如下,其中--prefix=x32中的x32表示編譯好后的安裝目錄,編譯成功后執行make install會放在FFmpeg目錄下的x32文件夾里面。

cd /d/git/FFmpeg

./configure --enable-shared --enable-static --toolchain=msvc --prefix=x32 --enable-postproc --enable-gpl --enable-avresample

執行./configure命令后等待比較長時間直到回到命令行提示符

由于windows10系統默認是gbk編碼,而我們FFmpeg的源碼都是utf8編碼,編譯時候如果代碼里面有中文,就會產生問題,有2個文件里面帶有中文,我們需要將其轉換為utf8編碼,一個是D:\git\FFmpeg\config.h,另外一個是D:\git\FFmpeg\ffbuild\config.mak。

轉換完成以后執行編譯命令

make -j4

經過很長時間編譯完成后執行

make install

現在我們打開FFmpeg目錄下的x32目錄,就可以看到編譯好的FFmpeg的靜態庫和動態庫

bin目錄下放的是靜態庫和動態庫,include目錄下放的是頭文件,這兩個目錄下的東西都是我們在vs2017環境下編譯ffplay需要的。

7.在vs2017下編譯ffplay

打開vs2017選擇文件,新建項目,選擇visual c++下的Windows桌面,建立一個空項目

開始拷貝文件到ffplay目錄下,我這里SDL的目錄是D:\SDL2-2.0.9\VisualC\Win32,FFmpeg的目錄是D:\git\FFmpeg。在D:\ffplay\ffplay目錄下新建一個文件夾lib用于放ffmpeg靜態庫和sdl2的靜態庫。

拷貝D:\git\FFmpeg\下的config.h文件到D:\ffplay\ffplay目錄

拷貝D:\git\FFmpeg\fftools下的ffplay.c,cmdutils.c,cmdutils.h三個文件到D:\ffplay\ffplay目錄

拷貝D:\git\FFmpeg\x32下的include文件夾到D:\ffplay\ffplay目錄下,如果是64位的,則從D:\git\FFmpeg\x64下拷貝。

拷貝D:\git\FFmpeg\x32\bin下的所有擴展名為lib的文件到D:\ffplay\ffplay\lib下面,拷貝D:\git\FFmpeg\x32\bin下的所有擴展名為dll的文件到D:\ffplay\ffplay下面。如果是64位的,則從D:\git\FFmpeg\x64\bin文件夾拷貝。

拷貝D:\SDL2-2.0.9\VisualC\Win32\Debug下的SDL2.lib,SDL2main.lib到D:\ffplay\ffplay\lib下面,拷貝D:\SDL2-2.0.9\VisualC\Win32\Debug下的SDL2.dll到D:\ffplay\ffplay下面。如果是64位的,則從D:\SDL2-2.0.9\VisualC\x64\Debug文件夾下拷貝。

在D:\ffplay\ffplay\include目錄下新建一個文件夾SDL2,拷貝D:\SDL2-2.0.9\include下的全部頭文件到D:\ffplay\ffplay\include\SDL2目錄下。

現在文件拷貝完畢,開始配置ffplay項目的屬性。

右鍵點擊ffplay下的源文件,選擇添加-》現有項,把D:\ffplay\ffplay目錄下的cmdutils.c和ffplay.c加進來。如下圖所示

右鍵點擊ffplay下的頭文件,選擇添加-》現有項,把D:\ffplay\ffplay目錄下的cmdutils.h和config.h加進來。

右鍵點擊ffplay,選擇屬性,配置屬性下的常規,項目默認的字符集改成使用Unicode字符集,如下圖所示

VC++目錄下庫目錄加上lib,如下圖所示

C/C++下的常規中,附加包含目錄改成include,另外SDL檢查改成否,如下圖所示

鏈接器下的輸入中的附加依賴項改成

avcodec.lib;avformat.lib;avutil.lib;avdevice.lib;avfilter.lib;postproc.lib;swresample.lib;swscale.lib;SDL2.lib;SDL2main.lib;avresample.lib;%(AdditionalDependencies)如下圖所示

右鍵點擊ffplay項目,選擇重新掃描方案,然后開始編譯

編譯遇到錯誤,找不到三個頭文件,注釋掉就可以了,如下圖所示,注釋掉ffplay.c中這三個出錯的頭文件引用就可以了

現在ffplay已經可以編譯通過了,可以測試一下能否正常工作,選擇ffplay屬性頁中的調試,將命令參數設置需要播放的音視頻文件地址,就可以了,記得命令參數要空格開頭,不同參數之前用空格隔開

點擊本地windows調試器開始運行ffplay

總結:

在windows環境下編譯FFmpeg和ffplay并不復雜,編譯好的庫可以正常在vs2017下調用,我們可以方便的使用這些庫開發windows下的音視頻播放器。

編譯重點在于選擇和正確配置編譯環境,32位和64位的庫要選擇相對應的編譯環境,另外由于windows環境是gbk編碼,而FFmpeg是utf8編碼,所以編譯過程中可能遇到這方面問題,具體情況需要具體分析。

特別紀念雷霄驊博士,我就是在他的文章的指導下了解了很多關于FFmpeg的知識,希望他在天堂安好。

總結

以上是生活随笔為你收集整理的2019编译ffepeg vs_如何在windows10下使用vs2017编译最新版本的FFmpeg和ffplay的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。