/godot-videodecoder

GDNative Video Decoder libraries for Godot Game Engine, using FFmpeg library for codecs. A Google Summer of Code Project, 2018

Primary LanguageCMIT LicenseMIT

Godot Video Decoder

GDNative Video Decoder library for Godot Engine, using the FFmpeg library for codecs.

A GSoC 2018 Project

This project is set up so that a game developer can build x11, windows and osx plugin libraries with a single script. The build enviroment has been dockerized for portability. Building has been tested on linux and windows 10 pro with WSL2.

The most difficult part of building the plugin libraries is extracting the macos sdk from the XCode download since it can't be distributed directly.

Releases

Release builds should automatically be available here on github.

Media Support

The current dockerized ffmpeg build supports VP9 decoding only. Support for other decoders could be added, PRs are welcome. Patent encumbered codecs like h264/h265 will always be missing in the automatic builds due to copyright issues and the cost of distributing pre-built binaries.

Instructions to build with docker

  1. Add the repository as a submodule or clone the repository somewhere and initialize submodules.
git submodule add https://github.com/jamie-pate/godot-videodecoder.git contrib/godot-videodecoder
git submodule update --init --recursive

or

git clone https://github.com/jamie-pate/godot-videodecoder.git godot-videodecoder
cd godot-videodecoder
git submodule update --init --recursive
  1. Copy the build_gdnative.sh.example to your project and adjust the paths inside.
  • cp contrib/godot-videodecoder/build_gdnative.sh.example ./build_gdnative.sh, vi ./build_gdnative.sh
  • chmod +x ./build_gdnative.sh if needed
  1. Install docker

  2. Extract MacOSX sdk from the XCode

  1. run build_gdnative.sh (Be sure to add your user to the docker group or you will have to run as sudo (which is bad))

TODO:

  • instructions for running the test project
  • Add a benchmark to the test project
  • Input for additional ffmpeg flags/deps
  • Re-enable additional media formats with the ability to build only a subset
  • OSX build in releases via github actions