
This is a small list of steps in order to build FFmpeg into a msvc DLL and lib file.

The projects contain Release and Debug builds for static lib files (Debug/Release)
  as well as dynamic shared dll files (DebugDLL/ReleaseDLL).
Choose whichever project configuration meets your requirements.

Note: FFmpeg requires C99 support in order to compile. Only Visual Studio 2013 or newer supports required C99 functionality and so any 
older version is not supported. Visual Studio 2013 or newer is required. If using an older unsupported version of Visual Studio the
Intel compiler can be used to add in the required C99 capability.


*** Using the Default Supplied Projects ***

The supplied project files are created using default configuration options as used by the ShiftMediaProject.
These projects use Visual Studio 2013/2015 and require certain additional dependencies to be built and available at compile time.
Required project dependencies include:
    bzlib
    iconv
    zlib
    lzma
    libxml2
    sdl2
    libmp3lame
    libvorbis
    libspeex
    libopus
    libilbc
    libtheora
    libx264
    libx265
    libxvid
    libvpx
    libgme
    libmodplug
    libsoxr
    libfreetype
    fontconfig
    libfribidi
    libass
    gnutls
    libgcrypt
    libssh
    libcdio
    libcdio_paranoia
    libbluray
    opengl
    ffnvcodec
    libmfx

Most of the above dependencies are supplied as part of the ShiftMediaProject repositories.
These repositories can be manually downloaded or automatically cloned using the supplied
  project_get_dependencies.bat file. This file can also be used to check for and download
  any dependency updates at any point after the first clone of the library.
  
Some of these dependency projects have additional requirements to those listed here. See the corresponding readme for each of the projects for further details.

Many of the possible FFmpeg dependencies (and there dependencies) are available in the ShiftMediaProject repositories.
However the following is a list of extra dependency options that require external downloads:
    1) opengl (requires glext)
        a) Download glext.h and wglext.h from opengl.org.
        b) Save the header files into "OutputDir/include/gl/*".
        c) Download khrplatform.h from khronos.org
        d) Save the header file into "OutputDir/include/KHR/*".
    2) ffnvcodec (requires nv-codec-headers)
        a) Download the nv-codec-headers repository from https://github.com/FFmpeg/nv-codec-headers
        b) Save the contents of the nv-codec-headers repositories "include" folder into "OutputDir/include/*".
    3) AMF (requires Advanced Media Framework (AMF) SDK headers)
        a) Download the AMF repository from https://github.com/GPUOpen-LibrariesAndSDKs/AMF
        b) Save the contents of the AMF repositories "amf/public/include" into "OutputDir/include/AMF/*".
            
*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..
    
Any dependencies supplied by ShiftMediaProject should be downloaded next to the FFmpeg folder as they will use the same OutputDir
location. Projects to build each dependency can be found in the respective repository ./SMP directories or all together using
the all inclusive ffmpeg_deps.sln.

Only dependencies built from supplied ShiftMediaProject repositories are tested and supported. Using compiled dependencies from
other sources may result in version mismatch or other issues. Although these external sources generally work fine any problems associated
with them are not covered by ShiftMediaProject and so they should be used with discretion.
    

*** Building with ASM ***

In order to build FFmpeg using msvc you must first download and install NASM.
NASM is required to compile all assembly files.

1) Visual Studio YASM integration can be downloaded from https://github.com/ShiftMediaProject/VSNASM/releases/latest

2) Once downloaded simply follow the install instructions included in the download.
