/EzMediaCore

Professional Media Playback Library and Plugin

Primary LanguageJavaMIT LicenseMIT

Build Status Code Coverage Dependency Status Documentation Status Discord Language

EzMediaCore


EzMediaCore is a library written in Java using the Spigot API and NMS classes to provide a helpful tool for other media plugins to take advantage of. One of the most fascinating features include the ability to render videos on a Spigot server.

In order to maintain fast processing speeds, algorithms such as dithering, hardware acceleration, and use of native code is utilized. The library primarily uses VLC Media Player and FFmpeg, for blazing fast frame delivery and support for many sorts of media formats (including streams).

example-playback.mp4

Frame rates can reach up to the 30's or 40's with extremely great quality. As a comparison, a smooth animation is approximately 25 frames. The library is capable of playing media in many sorts of ways, such as maps, entities, chat, scoreboards, debug markers. It is also capable of providing audio through a resourcepack, website, and Discord bot (primarily for playing streams).


Prerequisites

  • Java 17
  • Minecraft versions 1.18.2 and 1.19 supported.

Add the following to your gradle configuration:

repositories {  
    maven("https://pulsebeat02.jfrog.io/artifactory/minecraftmedialibrary/")
}  
dependencies {  
    implementation("io.github.pulsebeat02:EzMediaCore:v1.0.0")
}  

Take a look at this module for examples on how to use the library. It is the plugin I used that displayed the video.


Building Locally

  1. Run BuildTools for versions 1.18.2 and 1.19.
  2. Clone the repository by using the following Git link: https://github.com/MinecraftMediaLibrary/EzMediaCore.git
  3. Run gradlew shadowJar on the parent project to build a jar for the plugin.

Partnerships

BisectHosting

I'd like to also thank BisectHosting for sponsoring open-source projects such as this one as well. Use code pulse on your next purchase to get 25% off your next server!


Contributors / Acknowledgements

Developer Contribution
BananaPuncher714 Created the original MinecraftVideo plugin
Jetp250 Developed Floyd Steinberg dithering
Emilyy Assisted with implementation and testing
Conclure Assisted with Maven to Gradle migration
itxfrosty Developed a Discord bot for music integration
Rouge_Ram Developed a Discord bot used in Pulse Development!
Sponsor Donation
Vijay Pondini $10.00
Matthew Holden $6.00
Project / Dependency Contribution
VLCJ made by caprica VLC Media Player Bindings
VLC Media Player Native Backend Support
Jaffree made by kokorin FFmpeg Integration (NUT Container)
FFmpeg Native Media Encoding and Decoding

Projects that use EzMediaCore Code

Project Description
MakiDesktop Controlling VNC through Minecraft Maps
MakiScreen Streaming OBS onto Minecraft Maps