Скачать MapEngine Media Extension — Minecraft Моды — MetaMods
MapEngine Media Extension

MapEngine Media Extension

Активный

Установок

0

Последнее обновление

1 год назад

Версии

1.19.3 — 1.20.6
Сервер
Библиотеки
Утилиты

MapEngine Media Extension

логотип

MapEngine Media Extension представляет собой дополнительную библиотеку-расширение для платформы MapEngine. Данный модуль расширяет возможности системы, предоставляя программные интерфейсы для воспроизведения видеоконтента и трансляции потокового видео.

Основные возможности

Технологическая основа расширения построена на JavaCV от bytedeco с применением FFmpeg для декодирования мультимедийных данных. При запуске сервера автоматически загружаются необходимые библиотеки JavaCV, JavaCPP и FFmpeg, которые добавляются в путь загрузки классов. Умная система загрузки определяет требуемые компоненты в зависимости от операционной системы и архитектуры процессора.

Ключевые функциональные особенности:

  • Автоматическая загрузка зависимостей во время выполнения
  • Декодирование медиаконтента на основе FFmpeg

Загрузка нативных библиотек

На следующей GIF-анимации демонстрируется процесс загрузки нативных библиотек при старте сервера:

RuntimeDependencyLoading

Прямая трансляция на картах

Пример прямой трансляции через RTMP протокол на массиве карт размером 7×4 блоков. Источник трансляции имеет разрешение 1920×1080 с частотой 20 кадров в секунду, вещание осуществляется через OBS Studio.

Инструкции по использованию

Модуль MapMediaExt должен быть добавлен как зависимость в файл plugin.yml, независимо от используемой системы сборки проекта.

Настройка Maven

<repositories>
    <repository>
        <id>tjcserver</id>
        <url>https://repo.thejocraft.net/releases/&lt;/url&gt;
    </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.

Сборка проекта

Для самостоятельной сборки проекта выполните следующие шаги:

  1. Клонируйте репозиторий (git clone https://github.com/TheJoCraftNET/MapEngine-MediaExtension.git)
  2. Перейдите в созданную директорию (cd MapEngine-MediaExtension)
  3. Соберите JAR-файл (./gradlew build для Linux/MacOS, gradlew build для Windows)

Собранный файл плагина будет находиться в директории buildlibs.

Участники проекта
booky10

booky10

Разработчик

pianoman911

pianoman911

Разработчик

Создан: 7 апр 2023

ID: 11037