Coder Social home page Coder Social logo

ionutdanila / ffmpeg.uwp Goto Github PK

View Code? Open in Web Editor NEW
25.0 5.0 11.0 6.54 MB

FFmpeg libraries (x86, x64, ARM, ARM64) for UWP (Universal Windows Platform)

License: GNU Lesser General Public License v2.1

Batchfile 51.75% Shell 48.25%
ffmpeg x86 x64 arm arm64 ffmpeginterop uwp ffmpeg-libraries

ffmpeg.uwp's Introduction

FFmpeg for UWP (Universal Windows Platform)

You can install the NuGet Package (FFmpeg UWP 4.1.3) from here.

You can download the latest compiled libraries (FFmpeg UWP 4.1.3) from here.


Scope of this project

  • Build FFmpeg libraries for UWP (x86, x64, ARM and ARM64) in order to port applications to UWP
  • The resulted libraries can be used with the FFmpegInterop Project or any other application that requires FFmpeg libraries to run on UWP (usually C++/CX projects)

Disclaimer

The original compilation guide for WinRT/UWP can be found on FFmpeg website. I extended the instructions from the original Microsoft FFmpegInterop project. This project builds libraries only for Windows 10 (UWP) using Visual Studio 2017 (this way we can also build for ARM64).

License

Prerequisites

FFmpeg source code

The project uses an embedded git submodule that points to the latest tested release of FFmpeg.


Visual Studio Setup

Download and install Microsoft Visual Studio 2017 on a Windows 10 machine.


MSYS2 Setup

  • Download the latest MSYS2 installer on a directory on your PC (eg.: C:\msys64) and follow the installation instruction closely from the installation webpage.
  • From msys2_shell.cmd, replace rem set MSYS2_PATH_TYPE=inherit with set MSYS2_PATH_TYPE=inherit. This will allow the environment variables for Visual Studio to be transferred to the MSYS2 environment and back.
  • Once base MSYS2 is successfully installed, get the latest make package by invoking the following command in your MSYS2 shell: pacman -S make
  • Also get the latest gcc package: pacman -S gcc
  • Rename or remove link.exe in the MSYS2 usr bin folder (eg.: C:\msys64\usr\bin\link.exe) to prevent conflict with MSVC link.exe
  • Install perl as it will be needed to run gas-preprocessor.pl: pacman -S perl
  • Install also diffutils for configure script: pacman -S diffutils

YASM Setup

  • Download YASM executable. You have to download the "general use" binaries and NOT the ones for VS2010. Either Win32 or Win64 binaries support outputting object files for both architectures so that should not matter. The last tested version was yasm-1.3.0-win64.exe.
  • Rename the downloaded executable to yasm.exe and place it in your MSYS2 path.

gas-preprocessor Setup

Download gas-preprocessor.pl Perl script and place it in your MSYS2 path (eg.: C:\msys64\usr\bin\gas-preprocessor.pl)

Compilation

Invoke BuildFFmpeg.bat script without any parameters to build the libraries on all available architectures (x86, x64, ARM, ARM64). Also, you can invoke the script with parameters:

    BuildFFmpeg.bat				- Build for UWP ARM, x64, x86 and ARM64
    BuildFFmpeg.bat ARM64			- Build for UWP ARM64 only
    BuildFFmpeg.bat x86 x64			- Build for UWP x86 and x64 only

ffmpeg.uwp's People

Contributors

ionutdanila avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

ffmpeg.uwp's Issues

rtsp:// stream doesn't show correctly?

When I try to play a stream from a dahua ip camera with a URL like this:
rtsp://user:[email protected]:portnumber
the stream "plays" but is all black? I get no error messages or exceptions? Maybe it isn't playing?
The camera stream works fine from ffplay and VLC.
fmpeg supports this url form.

Any idea how to debug this? Since it works in ffplay I would lean towards a bug in MediaElement? Or something I'm missing?

Certification error due to unsupported APIs

Hey, when I try to submit an app using this library to the Store I get a long list of unsupported APIs that lead the certification to fail:

    API __std_type_info_destroy_list in vcruntime140.dll is not supported for this application type. avdevice-58.dll calls this API.
    API memset in vcruntime140.dll is not supported for this application type. avdevice-58.dll calls this API.
    API RtlCaptureContext in kernel32.dll is not supported for this application type. avdevice-58.dll calls this API.
    API RtlVirtualUnwind in kernel32.dll is not supported for this application type. avdevice-58.dll calls this API.
    API UnhandledExceptionFilter in kernel32.dll is not supported for this application type. avdevice-58.dll calls this API.
    API __C_specific_handler in vcruntime140.dll is not supported for this application type. swresample-3.dll calls this API.
    API __std_type_info_destroy_list in vcruntime140.dll is not supported for this application type. swresample-3.dll calls this API.
    API memcpy in vcruntime140.dll is not supported for this application type. swresample-3.dll calls this API.
    API memset in vcruntime140.dll is not supported for this application type. swresample-3.dll calls this API.
    API RtlCaptureContext in kernel32.dll is not supported for this application type. swresample-3.dll calls this API.
    API RtlVirtualUnwind in kernel32.dll is not supported for this application type. swresample-3.dll calls this API.
    API UnhandledExceptionFilter in kernel32.dll is not supported for this application type. swresample-3.dll calls this API.
    API __C_specific_handler in vcruntime140.dll is not supported for this application type. avutil-56.dll calls this API.
    API __std_type_info_destroy_list in vcruntime140.dll is not supported for this application type. avutil-56.dll calls this API.
    API memchr in vcruntime140.dll is not supported for this application type. avutil-56.dll calls this API.
    API memcmp in vcruntime140.dll is not supported for this application type. avutil-56.dll calls this API.
    API memcpy in vcruntime140.dll is not supported for this application type. avutil-56.dll calls this API.
    API memmove in vcruntime140.dll is not supported for this application type. avutil-56.dll calls this API.
    API memset in vcruntime140.dll is not supported for this application type. avutil-56.dll calls this API.
    API strchr in vcruntime140.dll is not supported for this application type. avutil-56.dll calls this API.
    API strrchr in vcruntime140.dll is not supported for this application type. avutil-56.dll calls this API.
    API RtlCaptureContext in kernel32.dll is not supported for this application type. avutil-56.dll calls this API.
    API RtlVirtualUnwind in kernel32.dll is not supported for this application type. avutil-56.dll calls this API.
    API UnhandledExceptionFilter in kernel32.dll is not supported for this application type. avutil-56.dll calls this API.
    API __C_specific_handler in vcruntime140.dll is not supported for this application type. swscale-5.dll calls this API.
    API __std_type_info_destroy_list in vcruntime140.dll is not supported for this application type. swscale-5.dll calls this API.
    API memcmp in vcruntime140.dll is not supported for this application type. swscale-5.dll calls this API.
    API memcpy in vcruntime140.dll is not supported for this application type. swscale-5.dll calls this API.
    API memmove in vcruntime140.dll is not supported for this application type. swscale-5.dll calls this API.
    API memset in vcruntime140.dll is not supported for this application type. swscale-5.dll calls this API.
    API RtlCaptureContext in kernel32.dll is not supported for this application type. swscale-5.dll calls this API.
    API RtlVirtualUnwind in kernel32.dll is not supported for this application type. swscale-5.dll calls this API.
    API UnhandledExceptionFilter in kernel32.dll is not supported for this application type. swscale-5.dll calls this API.
    API __C_specific_handler in vcruntime140.dll is not supported for this application type. avformat-58.dll calls this API.
    API __std_type_info_destroy_list in vcruntime140.dll is not supported for this application type. avformat-58.dll calls this API.
    API memcmp in vcruntime140.dll is not supported for this application type. avformat-58.dll calls this API.
    API memcpy in vcruntime140.dll is not supported for this application type. avformat-58.dll calls this API.
    API memmove in vcruntime140.dll is not supported for this application type. avformat-58.dll calls this API.
    API memset in vcruntime140.dll is not supported for this application type. avformat-58.dll calls this API.
    API strchr in vcruntime140.dll is not supported for this application type. avformat-58.dll calls this API.
    API strrchr in vcruntime140.dll is not supported for this application type. avformat-58.dll calls this API.
    API strstr in vcruntime140.dll is not supported for this application type. avformat-58.dll calls this API.
    API RtlCaptureContext in kernel32.dll is not supported for this application type. avformat-58.dll calls this API.
    API RtlVirtualUnwind in kernel32.dll is not supported for this application type. avformat-58.dll calls this API.
    API UnhandledExceptionFilter in kernel32.dll is not supported for this application type. avformat-58.dll calls this API.
    API __C_specific_handler in vcruntime140.dll is not supported for this application type. avcodec-58.dll calls this API.
    API __std_type_info_destroy_list in vcruntime140.dll is not supported for this application type. avcodec-58.dll calls this API.
    API memcmp in vcruntime140.dll is not supported for this application type. avcodec-58.dll calls this API.
    API memcpy in vcruntime140.dll is not supported for this application type. avcodec-58.dll calls this API.
    API memmove in vcruntime140.dll is not supported for this application type. avcodec-58.dll calls this API.
    API memset in vcruntime140.dll is not supported for this application type. avcodec-58.dll calls this API.
    API strchr in vcruntime140.dll is not supported for this application type. avcodec-58.dll calls this API.
    API strstr in vcruntime140.dll is not supported for this application type. avcodec-58.dll calls this API.
    API RtlCaptureContext in kernel32.dll is not supported for this application type. avcodec-58.dll calls this API.
    API RtlVirtualUnwind in kernel32.dll is not supported for this application type. avcodec-58.dll calls this API.
    API UnhandledExceptionFilter in kernel32.dll is not supported for this application type. avcodec-58.dll calls this API.
    API __C_specific_handler in vcruntime140.dll is not supported for this application type. avfilter-7.dll calls this API.
    API __std_type_info_destroy_list in vcruntime140.dll is not supported for this application type. avfilter-7.dll calls this API.
    API memcpy in vcruntime140.dll is not supported for this application type. avfilter-7.dll calls this API.
    API memmove in vcruntime140.dll is not supported for this application type. avfilter-7.dll calls this API.
    API memset in vcruntime140.dll is not supported for this application type. avfilter-7.dll calls this API.
    API strchr in vcruntime140.dll is not supported for this application type. avfilter-7.dll calls this API.
    API strstr in vcruntime140.dll is not supported for this application type. avfilter-7.dll calls this API.
    API RtlCaptureContext in kernel32.dll is not supported for this application type. avfilter-7.dll calls this API.
    API RtlVirtualUnwind in kernel32.dll is not supported for this application type. avfilter-7.dll calls this API.
    API UnhandledExceptionFilter in kernel32.dll is not supported for this application type. avfilter-7.dll calls this API.```


Any idea? Thanks!

System.TypeLoadException when trying to use the library

I'm trying to use the library , but once loaded from the Nuget package, it is failing on run time with this exception:
System.TypeLoadException: 'Error 0x261F.

It does seems like others might have run into the same problem, are we missing some of the DLLs here on the nuget package?

I tried building with vcpkg ... but ...

Everything builds with the latest ffmpeg, but playback is broken. Getting exceptions now.

Any chance you could have a look at building with the vcpkg version of ffmpeg?

is it necessary to compile fffmpeg?

Hello, there's a little question.
I found that you provided a compiled version of lib download, so is it necessary to follow [Compile and Use FFmpeg Libraries for Windows Runtime (Windows 10 or Windows 8.1 Apps)]? Can i just use the compiled dll? I don't know much about ffmpeg and i am not good at C ,thank you for your help :D

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.