Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/thejocraftnet/mapengine-mediaextension
FFmpeg Media Extension library for MapEngine
https://github.com/thejocraftnet/mapengine-mediaextension
image map mapengine minecraft paper streaming
Last synced: about 1 month ago
JSON representation
FFmpeg Media Extension library for MapEngine
- Host: GitHub
- URL: https://github.com/thejocraftnet/mapengine-mediaextension
- Owner: TheJoCraftNET
- License: agpl-3.0
- Created: 2023-04-05T14:55:42.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-05-30T20:16:00.000Z (7 months ago)
- Last Synced: 2024-05-30T23:01:16.720Z (7 months ago)
- Topics: image, map, mapengine, minecraft, paper, streaming
- Language: Java
- Homepage:
- Size: 115 KB
- Stars: 6
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# MapEngine Media Extension
[![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/TheJoCraftNET/MapEngine-MediaExtension?style=flat-square)](#)
[![AGPLv3 License](https://img.shields.io/badge/License-AGPL%20v3-yellow.svg?style=flat-square)](https://opensource.org/license/agpl-v3/)
[![Status Beta](https://img.shields.io/badge/Status-Beta-orange?style=flat-square)](#)## Description
MapEngine Media Extension is an extension library for [MapEngine](https://github.com/TheJoCraftNET/MapEngine).
It provides an additional API for playing video and streaming live content using MapEngine.The Extension uses [bytedeco/javacv's](https://github.com/bytedeco/javacv) FFmpeg implementation for decode media.
JavaCV, JavaCPP and FFmpeg will be downloaded on server startup and loaded into the classpath.
This plugin downloads only the currently needed libraries for the current operating system and architecture.## Features
- Runtime dependency downloader
- FFmpeg based media decodingDownloading native libraries
This is an example of native libraries being downloaded on server startup.
![RuntimeDependencyLoading](https://i.imgur.com/GMWH9NW.gif)
Live streaming via RTMP
This is an example of a live stream on a 7x4 map in Minecraft.
The stream source is 1920x1080@20fps streamed with OBS.[![Watch it here](https://i.imgur.com/h1e9ROE.png)](https://youtu.be/5tg_DX84eLw)
## Usage
`MapMediaExt` has to be added as a dependency to the `plugin.yml` regardless of the build system used.
Maven
```xml
tjcserver
https://repo.thejocraft.net/releases/
```
```xml
de.pianoman911
mapengine-mediaext
1.1.3
provided
```
Gradle (groovy)
```groovy
repositories {
maven {
url = 'https://repo.thejocraft.net/releases/'
name = 'tjcserver'
}
}dependencies {
compileOnly 'de.pianoman911:mapengine-mediaext:1.1.3'
}
```Gradle (kotlin)
```kotlin
repositories {
maven("https://repo.thejocraft.net/releases/") {
name = "tjcserver"
}
}dependencies {
compileOnly("de.pianoman911:mapengine-mediaext:1.1.3")
}
```### Example
```java
public class Bar {public void foo(IMapDisplay display, URI streamUri) {
// create a drawing space for the display
IDrawingSpace space = plugin.mapEngine().pipeline().drawingSpace(display);
// add all online players as receivers
space.ctx().receivers().addAll(Bukkit.getOnlinePlayers());// create a new frame source with a 10 frame buffer and rescaling enabled
FfmpegFrameSource source = new FfmpegFrameSource(streamUri, 10, space, true);
// start the decoding process
source.start();
}
}
```More detailed examples can be found in the [TheJoCraftNET/MapEngineExamples](https://github.com/TheJoCraftNET/MapEngineExamples) repository.
## Building
1. Clone the project (`git clone https://github.com/TheJoCraftNET/MapEngine-MediaExtension.git`)
2. Go to the cloned directory (`cd MapEngine-MediaExtension`)
3. Build the Jar (`./gradlew build` on Linux/MacOS, `gradlew build` on Windows)The plugin jar can be found in the `build` → `libs` directory.