microsoft / FFmpegInterop

This is a code sample to make it easier to use FFmpeg in Windows applications.
Apache License 2.0
1.28k stars 310 forks source link

Cannot build FFMPEGINTEROP with Visual Studio 2017 #238

Open frangagn opened 5 years ago

frangagn commented 5 years ago

I've been fiddling with this for a few hours now. I've been trying to follow the infamous instructions to build the ffmpeginterup with the arm version of Visual Studio 2015. I have 2017 and have no use for 2015... So the instructions don't work at the line: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2015\Visual Studio Tools\Windows Desktop Command Prompts\VS2015 x86 ARM Cross Tools Command Prompt

Since the ARM Cross Tools is not part of 2017.

I've beem trying to find alternate ways without success, looking through all forums, but there must be something I'm missing.

In 2018 (almost 2019!) is there a way to build ffmpeginterop with VS 2017? If yes, anyone could point me to the proper script/solution/instructions?

And there is something I must be missing here., Why is it not possible to download this already built for an X86 or x64 machine?

Thank you so much!

frangagn commented 5 years ago

As nobody bothered answering here, I just want to let others who might have this problem that there is a build on nuget which works fine with VS2017. So there is no need to actually build the whole thing, just get the nuget extension.

lukasf commented 5 years ago

I would not recommend using the nuget file for anything but development use. It is a pretty outdated ffmpeg build. People reported problems, later we found out they were using this nuget package. After they manually built the correct ffmpeg version, their problems went away.

On my fork of this lib (https://github.com/lukasf/FFmpegInterop) there is an experimental build file for VS2017. You can try it if you like. It must be run from a normal cmd prompt (not a VS developer command prompt). Let me know if there are any issues.

frangagn commented 5 years ago

I see where you are coming from lukasf, but there is no other way to build the FFmpegInterop from VS2017 than installing 2015.... or no other instructions than the one that describes how to do it for Win RT... So a buggy VS2017 nuget package is better than nothing at all...

I tried the experimental build file and it is, as you describe, experimental. If anyone would explain clearly to me how to do it, I will contribute by writing proper instructions on how to build it in 2018, almost 2019.

AdamSzofran commented 5 years ago

Are you sure you can't build in VS 2017? I'm pretty sure I was able to just by letting VS 2017 upgrade the solution and then updating the min and target platforms to 10.0.17134.0. I was building for x64, not ARM though.

khouzam commented 5 years ago

You can build the solution in VS2017, but the build scripts to build FFmpeg need to be modified to for VS 2017.

Alternatively using vcpkg to build FFmpeg for UWP works fine with VS2017 and with the integration it provides, the headers and dlls are automatically added to your solution.

lukasf commented 5 years ago

@frangagn First you must install all ffmpeg prerequisites exactly as stated here:

https://trac.ffmpeg.org/wiki/CompilationGuide/WinRT#Prerequisites

Read every step very carefully and follow exactly as said. You can run those MSYS2 verify steps also from x86_x64 Cross Tools Command Prompt for VS 2017. Output paths of first three verify steps will be different but the important ones are the last three steps.

Then you need to open a new normal CMD prompt and run the BuildFFmpeg_VS2017.bat.

ionutdanila commented 5 years ago

@frangagn @khouzam I updated the BuildFFmpeg.bat script to work with Visual Studio 2017. It also builds the libraries for ARM64. You can get the script from here. You can also get the latest compiled libraries for UWP (FFmpeg 4.1 Release) from here.