Back to mods
FFmpegLibExtra project artwork

CurseForge · Minecraft mod

FFmpegLibExtra

Additional mod to FFmpegLib( made by FLYover67 )

Choose a version Pick your version below, then grab the matching file.

Quick answer

Which FFmpegLibExtra release should I use?

Updated 7 days ago
Latest stable file ffmpeglibextra-1.0.0
Game version 1.21.1
Loader NeoForge

ffmpeglibextra-1.0.0 targets 1.21.1 with NeoForge. The project page does not say whether this file belongs on the client, dedicated server, or both. No extra mods listed for this file.

Where it goes

Is FFmpegLibExtra required on the client, server, or both?

The project page does not say whether this file belongs on the client, dedicated server, or both.

Client Source doesn’t say
Dedicated server Source doesn’t say
Loader for this release NeoForge
Required install it here Optional supported, not mandatory Not supported do not install here Source doesn’t say do not assume

The source does not explicitly classify this release as client-only or server-only.

What else does ffmpeglibextra-1.0.0 need?

ffmpeglibextra-1.0.0. Change the file and its required mods may change too.

No extra mods listed for this file

This file does not list any required mods. Do not add a library just because a different file uses it.

This file does not list any required or optional mods.

Before you install it

Add FFmpegLibExtra without breaking your instance.

Built for ffmpeglibextra-1.0.0. Pick another file and the loader, install side or required mods may change.

  1. 01

    Stick to this file

    Use ffmpeglibextra-1.0.0. It targets 1.21.1 with NeoForge; another release may have different loader, side or dependency requirements.

  2. 02

    Bring the mods it needs

    This file does not list any required mods. Do not add a library just because a different file uses it.

  3. 03

    Put it on the correct side

    The project page does not say whether this file belongs on the client, dedicated server, or both.

  4. 04

    Pick the file you checked

    Use the “Get this file” button beside ffmpeglibextra-1.0.0. It opens that exact file at the source.

About this project

What does FFmpegLibExtra add?

FFmpegLib Extra

A video playback add-on for FFmpegLib (NeoForge 1.21.1)

FFmpegLib Extra is a technical library mod. It adds no blocks, items or content for players. It builds on top of FFmpegLib and gives other mods a simple API for playing video with sound inside Minecraft: in GUI screens and directly on the faces of blocks in the world. Decoding runs through an external FFmpeg process and frames are streamed in a background thread. A corrupted or broken video file can't crash Minecraft or freeze the main game thread. Requires FFmpegLib. Found a bug or have a question? Write in the comments or send me a private message.


Features

Video playback with sound

Give a video an ID, prepare it once and control it with simple calls: play, pause, stop and setLoop. The audio track is extracted automatically and plays together with the picture.

Videos on block faces

Attach a video to any face of any block. Right-click the face to start or pause it. If the block is removed, the playback stops.

Positional audio

The volume depends on the distance between the player and the screen. You set the maximum audible distance for every video.

Video in GUI

Draw the current frame in any screen with a single call, just like a normal texture.

Smart frame streaming

Frames are loaded ahead of time in a separate thread and uploaded into one dynamic texture. Only a few frames are kept in memory, so long videos don't eat your RAM.

Fully asynchronous preparation

Frame and audio extraction return a CompletableFuture and run in the background. Your game keeps its FPS while the video is being converted.


API

All methods are in VideoManager and work on the client side only.

Preparing a video

public static CompletableFuture<Void> prepare(String id, File video, int fps, int width)
public static CompletableFuture<Void> load(String id, int fps)
public static CompletableFuture<Void> prepareAndLoad(String id, File video, int fps, int width)

prepare extracts PNG frames and the audio track. load loads already prepared frames and audio into memory. prepareAndLoad does both in one call. id is your own name for the video, fps is the playback frame rate and width is the frame width in pixels (lower values use less memory).

Playback control

VideoManager.play(id);
VideoManager.pause(id);
VideoManager.stop(id);
VideoManager.setLoop(id, true);
boolean playing = VideoManager.isPlaying(id);
VideoManager.unload(id);

unload frees the memory and the texture of the video.

Video on a block

public static void registerOverlay(String id, BlockPos pos, Direction face, float maxAudioDistance)
public static void unregisterOverlay(String id)

maxAudioDistance is the distance in blocks at which the sound can still be heard.

Video in GUI

public static void blit(GuiGraphics gui, String id, int x, int y, int width, int height)
public static ResourceLocation texture(String id)

blit draws the current frame. texture returns the texture if you want to render it yourself.


Usage example

Video on a block with looping

VideoManager.prepareAndLoad("intro", new File("videos/intro.mp4"), 25, 640)
        .thenRun(() -> {
            VideoManager.registerOverlay("intro", pos, Direction.NORTH, 20.0F);
            VideoManager.setLoop("intro", true);
            VideoManager.play("intro");
        });

Video in a screen

@Override
public void render(GuiGraphics gui, int mouseX, int mouseY, float partialTick) {
    super.render(gui, mouseX, mouseY, partialTick);
    VideoManager.blit(gui, "intro", 10, 10, 320, 240);
}

Notes

— FFmpegLib is required. Its automatic FFmpeg download currently supports Windows x64 only.
— The mod works on the client side only.
— Prepare a video once and reuse the files, don't convert it on every launch.
— Use .join() only off the main thread.

Project description from CurseForge.

Pick your setup

FFmpegLibExtra by Minecraft version and loader

Choose the version and loader you play, then open the matching release.

1 available setups

Check the dependencies, then try the file in a copied instance before changing a world you care about.

Recent files

FFmpegLibExtra versions and loaders

1 of 1 releases match

Looking for an older file? The official CurseForge project page is in Resources.