-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Welcome to the full documentation for MinecraftVideo (VMC). This wiki covers advanced commands, spatial audio configurations, subtitle track rendering, technical architecture, and custom compilation.
- Advanced Commands Reference
- Options Configuration (video option)
- Subtitle Tracking (video subs)
- Audio Modes & Spatialization
- Technical Architecture & Performance
- Building & Compiling From Source
All commands require the minecraftvideo.use permission (default: OP).
| Command | Description |
|---|---|
/video play <url-or-path> |
Starts playback of the source. Uses configured default options. |
/video pause |
Freezes the video frame-loop and pauses the audio stream in sync. |
/video resume |
Continues playback from the paused state. |
/video stop |
Stops playback, completely removes the virtual screen, and clears the queue. |
/video seek <+s|-s|[hh:]mm:ss> |
Jumps relative (e.g., +10, -30) or absolute (e.g., 1:30) in the video. |
/video skip / /video next
|
Skips the current video and advances to the next queued item. |
/video status |
Displays decoding latency, effective FPS, and system headroom metrics. |
-
/video queue add <url-or-path>: Appends a media source to the queue. Starts playback immediately if idle. -
/video queue list: Lists all queued items with their order and short names. -
/video queue remove <position>: Removes the item at the specified position. -
/video queue clear: Clears all pending videos from the queue.
The /video option command allows you to view or set configuration parameters on the fly, which are persisted to the server's config.yml.
/video option <width> <height> [fps]
-
<width>and<height>: Dimension in Minecraft maps (1 to 16). Each map is 128x128 pixels. -
[fps]: Frame rate limit (1 to 20 FPS). Default is 10.
/video option audio <mono|stereo|surround>
Sets the spatial audio rendering mode. (See the Audio Modes section below).
/video option avsync <milliseconds>
-
<milliseconds>: Sync delay compensation (default:200ms). If audio is arriving late compared to the video, increase this value. If the audio is too early, decrease it.
/video option sub <size|height|depth> <value>
Adjusts the 3D text overlay placement for subtitles:
-
size <scale>: Text size scale (default:1.0, range:0.1to20.0). -
height <value>: Blocks relative to the bottom edge of the screen (default:0.45, range:-20.0to20.0). -
depth <value>: Distance in blocks in front of the screen (default:0.05, range:-10.0to10.0).
VMC supports rendering text-based subtitles embedded inside your video files. Subtitles are displayed as a 3D text display entity located directly in front of the virtual screen.
-
Check Available Tracks:
Run
/video subs listto probe the media file usingffprobe. It will print all available embedded text subtitle tracks. -
Select and Load a Track:
Run
/video subs <track-number>(e.g.,/video subs 0) to load and display that subtitle track. -
Disable Subtitles:
Run
/video subs offor/video subs noneto turn them off.
Note: Only text-based formats (like SRT, ASS, WebVTT) are supported. Bitmap subtitle tracks (such as PGS or DVD subtitles) cannot be rendered.
Minecraft does not support raw streaming audio channels by default. VMC achieves synced sound by streaming decoded mono PCM audio through Simple Voice Chat's addon API.
Depending on your configuration, VMC can spatialize the audio in three ways:
- Mono: The entire soundtrack is downmixed and anchored as a single locational source at the very center of the virtual screen.
- Stereo: Creates two separate virtual audio sources anchored at the left and right edges of the screen, mapping the left and right audio channels accordingly.
-
Surround (5.1-like):
Simulates a 6-speaker cinema system layout:
- Front Left / Center / Front Right: Anchored at the screen plane.
- Subwoofer: Placed at the base of the screen center.
- Rear Left / Rear Right: Positioned behind the viewer/audience area.
VMC is built for speed and low server overhead:
graph TD
A[Minecraft Server] -- starts /video play --> B(PlaybackSession)
B -- spawns processes --> C[mcmm decoder subprocess]
B -- spawns processes --> D[ffmpeg audio decoder]
C -- raw map color IDs stdout --> B
D -- mono/stereo PCM stdout --> E[Simple Voice Chat API]
B -- virtual map packets async --> F[Players in range]
E -- locational audio voice streams --> F
-
Subprocess Offloading: The heavy decoding tasks of converting raw video to Minecraft map color palettes are handled by the external native binary
mcmmandffmpegas subprocesses, keeping JVM garbage collection and CPU cycles clear. - Map Packet Virtualization: No map item entities or world data are stored. Frames are sent directly to the client network queue using PacketEvents custom packet injection.
- Asynchronous Broadcasting: Packets are built and transmitted on a separate daemon thread to ensure the server's main tick loop is completely unaffected.
- Dynamic Catch-up: Late-joining players or players entering the tracking range are dynamically added to the packet broadcast list, instantly receiving the current screen state.
If you want to compile VMC yourself or build for a platform other than Linux x64:
The native converter source code is located in c version/. Run the helper script to compile the binary and stage the map color palette:
./prepare-natives.shThis script compiles a portable, statically-linked mcmm executable and copies it (along with preset_color_list.json) into src/main/resources/.
Once the native binaries are staged in the resources directory, package the plugin using Maven:
mvn packageThe compiled jar will be generated at target/minecraftvideo-plugin-0.1.0.jar.