簡體   English   中英

是否可以在Windows上構建ffmpeg x64?

[英]Is it possible to build ffmpeg x64 on Windows?

真正的答案可能是“不”,但仍然只是要仔細檢查。 有沒有人能夠在Windows(VS2013或VS2015)上構建ffmpeg x64? 我知道沒有經過大量修改就無法使用公開資源。 但是,如果有人這樣做,並且他願意分享一些技巧......

編輯:有趣的是,運行“配置”所需的大多數x64工具是如何在沒有依賴關系的情況下分發的,並且無法將它們放在任何地方。 看起來像一個專業的拖釣。

Edit2:有成千上萬的錯誤:

fatal error C1083: Cannot open include file: 'features.h': No such file or directory

features.h缺少許多其他頭文件。 有沒有解決方法,或切換到Linux是唯一的選擇?

假設x64是指標准的64位版本,是的,它是可能的。 有關FFmpeg的所有測試版本的命運頁面,該列表中有各種32位和64位版本的Visual Studio,包括VS2013和VS2015 64位。 搜索“Microsoft(R)C / C ++優化編譯器版本18.00.40629 for x64”(或“19.00.24215.1”)或“VS2013”​​/“VS2015”,一直在底部。 有關精確構建選項,請參閱2013年2015 此處。 重要的是在$PATH打開一個帶有64位命令行構建工具的Windows shell,然后從那里打開一個msys shell,然后使用--arch=x86_64 --target-os=win64 --toolchain=msvc運行configure --arch=x86_64 --target-os=win64 --toolchain=msvc選項。 有關更多詳細信息,請參閱MSVC編譯Wiki頁面。

我曾經用MinGW在linux機器上編譯ffmpeg,但現在我可以在Windows機器上編譯,在我的情況下是Windows 10。

注意:對我來說它只適用於ffmpeg版本> = 3.0並且我使用VS 2013和2015測試

幾個步驟,但非常重要:

下載並安裝(YASM除外):

腳步:

  1. 將MSYS2安裝到固定文件夾(例如:C:\\ Dev \\ msys64)
  2. 運行msys2.exe
  3. 執行命令“pacman -S make gcc diffutils”並按“Y”進行安裝
  4. 關閉msys2
  5. 將C:\\ Dev \\ msys64 \\ usr \\ bin \\ link.exe重命名為其他名稱(例如:msys2_link.exe)
  6. 復制並將“yasm - win64.exe”重命名為“C:\\ Dev \\ yasm.exe”
  7. 將“C:\\ Dev”添加到環境變量PATH
  8. 運行VS2013 / 2015 x86(適用於x86)或x64(x64)命令提示符
  9. 執行“C:\\ Dev \\ msys64 \\ msys2_shell.cmd -msys -use-full-path”
  10. 在msys2窗口中執行“which cl”,您應該看到VS的路徑
  11. 執行“哪個鏈接”,您還應該看到VS的路徑
  12. 轉到ffmpeg源路徑(例如:“cd /c/ffmpeg3.3”)
  13. 運行./configure並make

我用這個配置:

./configure \
    --toolchain=msvc \
    --arch=x86_64 \
    --enable-yasm \
    --enable-asm\
    --enable-shared \
    --enable-w32threads \
    --disable-programs \
    --disable-ffserver \
    --disable-doc \
    --disable-static \
    --prefix=/c/ffmpeg3.3/DLLS

注意2:如果你使用最后一行--prefix = / c / ffmpeg3.3 / DLLS ,作為最后一步,運行make install,二進制文件將被復制到該路徑

希望它有所幫助。

祝你好運

FFmpeg頁面本身有一個操作方法。到目前為止它對我不起作用,但至少你應該擺脫C99錯誤等等。

https://trac.ffmpeg.org/wiki/CompilationGuide/MSVC

也許你嘗試安裝這些東西(我必須單獨下載pkg-config和Msys2才能工作)並按照這些步驟操作。

不,它無法完成。 MS編譯器不支持#include_next。 另外,還有很多其他問題......你需要MinGW。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM