? ? ? ? 在windows平臺編譯FFmpeg,網上的大部分資料都是推薦用msys2+mingw進行編譯。在win10平臺,我們可以采用另一種方式,即wsl+msvc 實現window平臺的ffmpeg編譯。
????????下面將以vs2022+ubuntu22.04 為例,介紹此方法
0、前期準備
- 安裝vs2022 (根據自己喜好,也可以安裝其他版本的vs)
- 安裝wsl 及 linux子系統 (我選用了ubuntu22.04,可以根據喜好安裝其他linux版本)
- 下載ffmpeg代碼 : 下載自己需要的ffmpeg版本的代碼。 我選擇了最新版本v7.1.1
- 編譯ffmpeg編譯腳本: ffmpeg 的configure命令參數較多,可以提前編譯腳本sh腳本,避免在命令行手動輸入。
#!/bin/bashARCH=x86_64PREFIX=$(pwd)/win/x64function build_android {./configure \ --prefix=$PREFIX \ --enable-shared \ --disable-static \ --disable-debug \ --disable-x86asm \ --enable-gpl \ --enable-small \ --enable-neon \ --enable-d3d12va \ --enable-dxva2 \ --disable-postproc \ --disable-doc \ --disable-avdevice \ --disable-symver \ --disable-outdevs \ --disable-indevs \ --disable-vulkan \ --arch=$ARCH \ --toolchain=msvcmake cleanecho "============================ configure android windows x64 success =========================="}build_android
1、?準備編譯環境
? ? ? ? 1.1? 通過命令行方式進入 msvc編譯環境。我選擇了 x64 版本編譯
? ? ? ? ?啟動后可以看到, msvc的編譯路徑已經添加到path中。? ? ? ? ? ?
? ? ? ? 1.2? 在msvc編譯環境中啟動wsl,此操作可以避免在linux系統中手動搭建msvc編譯鏈。
wsl啟動后,可以看到msvc的編譯路徑已經包含到ubuntu系統的path中。
2、運行編譯腳本,編譯ffmpeg
如上圖,執行make -j xx 編譯ffmpeg。執行make命令時,由于編碼差異可能會出現亂碼,
可以重復步驟1重新打開一個wsl窗口,然后執行make -j xx,則可以正常顯示中文。
出現上述錯誤的原因是因為msvc的中文輸出編碼為GB2312, linux中編譯環境中編碼為UTF8,將fftools/opt_common.c用gb2312打開后,用utf8重新保存即可。
3、執行make install 將ffmpeg安裝到指定目錄。 (如腳本中PREFIX指定的目錄)