adjustments_bluray/README.md

51 lines
1.7 KiB
Markdown
Raw Normal View History

# Adjustments Blu-ray
BD-J scaffold for the off-beat dark comedy `Adjustments`.
## Tooling
- `mise` pins Temurin JDK 8 for legacy BD-J bytecode.
- `vendor/bdj-sdk` contains the BD-J Linux SDK pieces used for signing,
template BD-J metadata, stubs, and UDF ISO generation.
- `tools/tsmuxer/tsMuxeR` authors the generated elementary streams into a
Blu-ray playlist, clipinfo, and `.m2ts`.
- `tools/vlc-plugins` can hold project-local Arch VLC Blu-ray plugins when the
system VLC package is split and `vlc-plugin-bluray` is not installed.
- `ffmpeg` generates the temporary feature clip.
- `vlc` opens the resulting ISO.
## Commands
```sh
make bootstrap
make
make inspect
make run
```
The ISO is written to:
```text
build/adjustments.iso
```
`make run` previews the disc by pointing VLC's Blu-ray access module at the
`build/disc` BDMV **folder**, not the ISO:
```sh
vlc --bluray-menu bluray:///absolute/path/to/build/disc
```
Why the folder and not the ISO: when libbluray opens a UDF `.iso`, its BD-J
runtime must copy `BDMV/JAR/00000.jar` out of the image into a temp cache dir
before the JVM can load it. On this setup that write is refused by libbluray's
BD-J `SecurityManager`, so the Xlet class is never found and VLC silently falls
back to playing the raw playlist with no menu. Reading the folder lets
libbluray load the JAR directly, so the menu Xlet runs. The ISO is still the
artifact you burn/distribute; real players read the JAR from the disc
filesystem directly and are unaffected.
The initial menu is a Java Xlet overlay with a few bonus-feature placeholders
and a hidden menu stub. The actual generated video is a short ffmpeg SMPTE bars
pattern with AC-3 audio, authored as playlist `00000`.