Skip to content

Professional Media Playback Library and Plugin

License

Notifications You must be signed in to change notification settings

AI-Avalon/EzMediaCore

 
 

Repository files navigation

Build Status Code Coverage Dependency Status Documentation Status Discord Language

EzMediaCore


EzMediaCore is a library written in Java using the Bukkit 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 and website (primarily for playing streams). Discord support is current being implemented, but will come soon!


Prerequisites

  • Java 17
  • Minecraft versions 1.17.1 and 1.18.1 supported.

Add the following to your gradle configuration:

repositories {  
    maven {  
        url 'https://pulsebeat02.jfrog.io/artifactory/pulse-gradle-release-local'  
    }  
}  
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.17.1, and 1.18.1.
  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.

Public Testing Server

Thanks to Fallhost, they freely gave us a public test server. Join our Discord server and you are able to access the IP to the testing server!


Contributors/Acknowledgements

  • BananaPuncher714 for creating MinecraftVideo, leading the spark, and also providing a Floyd Steinberg dithering implementation.
  • Jetp250 for a fast dithering table class.
  • Emilyy for helping me with asynchronous tasks and implementation.
  • Conclure for helping me migrate from maven to gradle and overall big API improvements.
  • itxfrosty for helping me develop a Discord bot to play music.
  • Rouge_Ram for developing a Discord bot to use in the Pulse Development Server.
  • Fallhost, for allowing us to use their testing environment.
  • And also developers of the most important libraries I use, including:

About

Professional Media Playback Library and Plugin

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 98.7%
  • Other 1.3%