

MapEngine Media Extension
Активный0.0
Установок
Последнее обновление
Версии
MapEngine Media Extension

MapEngine Media Extension представляет собой дополнительную библиотеку-расширение для платформы MapEngine. Данный модуль расширяет возможности системы, предоставляя программные интерфейсы для воспроизведения видеоконтента и трансляции потокового видео.
Основные возможности
Технологическая основа расширения построена на JavaCV от bytedeco с применением FFmpeg для декодирования мультимедийных данных. При запуске сервера автоматически загружаются необходимые библиотеки JavaCV, JavaCPP и FFmpeg, которые добавляются в путь загрузки классов. Умная система загрузки определяет требуемые компоненты в зависимости от операционной системы и архитектуры процессора.
Ключевые функциональные особенности:
- Автоматическая загрузка зависимостей во время выполнения
- Декодирование медиаконтента на основе FFmpeg
Загрузка нативных библиотек
На следующей GIF-анимации демонстрируется процесс загрузки нативных библиотек при старте сервера:
Прямая трансляция на картах
Пример прямой трансляции через RTMP протокол на массиве карт размером 7×4 блоков. Источник трансляции имеет разрешение 1920×1080 с частотой 20 кадров в секунду, вещание осуществляется через OBS Studio.
Инструкции по использованию
Модуль MapMediaExt
должен быть добавлен как зависимость в файл plugin.yml
, независимо от используемой системы сборки проекта.
Настройка Maven
<repositories>
<repository>
<id>tjcserver</id>
<url>https://repo.thejocraft.net/releases/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>de.pianoman911</groupid>
<artifactid>mapengine-mediaext</artifactid>
<version>1.1.2</version>
<scope>provided</scope>
</dependency>
</dependencies>
Настройка Gradle (Groovy)
репозитории {
maven {
url = 'https://repo.thejocraft.net/releases/'
name = 'tjcserver'
}
}
зависимости {
compileOnly 'de.pianoman911:mapengine-mediaext:1.1.2'
}
Настройка Gradle (Kotlin)
репозитории {
maven("https://repo.thejocraft.net/releases/") {
name = "tjcserver"
}
}
зависимости {
compileOnly("de.pianoman911:mapengine-mediaext:1.1.2")
}
Практический пример
public class Bar {
public void foo(IMapDisplay display, URI streamUri) {
// создаём область рисования для дисплея
IDrawingSpace space = plugin.mapEngine().pipeline().drawingSpace(display);
// добавляем всех онлайн-игроков как получателей
space.ctx().receivers().addAll(Bukkit.getOnlinePlayers());
// создаём новый источник кадров с буфером на 10 кадров и включенным масштабированием
FFmpegFrameSource source = new FFmpegFrameSource(streamUri, 10, space, true);
// запускаем процесс декодирования
source.start();
}
}
Более детальные примеры использования можно найти в репозитории примеров MapEngine.
Сборка проекта
Для самостоятельной сборки проекта выполните следующие шаги:
- Клонируйте репозиторий (
git clone https://github.com/TheJoCraftNET/MapEngine-MediaExtension.git
) - Перейдите в созданную директорию (
cd MapEngine-MediaExtension
) - Соберите JAR-файл (
./gradlew build
для Linux/MacOS,gradlew build
для Windows)
Собранный файл плагина будет находиться в директории build
→ libs
.