Skip to content

feat: VOD-audio unlocker script + per-destination audio routing (0.1.13) - #50

Merged
Soulhackzlol merged 1 commit into
mainfrom
feat/eb-twitch-server
Aug 1, 2026
Merged

feat: VOD-audio unlocker script + per-destination audio routing (0.1.13)#50
Soulhackzlol merged 1 commit into
mainfrom
feat/eb-twitch-server

Conversation

@Soulhackzlol

Copy link
Copy Markdown
Owner

Summary

Two features for the VOD-audio story plus the 0.1.13 version fix.

🎙️ Twitch VOD audio on the InstantClone service (experimental)

OBS hardcodes its built-in VOD Track to the service literally named "Twitch" (ServiceSupportsVodTrack == {"Twitch"}), so it's unavailable on the InstantClone service. A bundled OBS Lua script (optional-vod-unlocker.lua) unlocks it on any service by attaching the same second audio encoder OBS's own VOD Track would.

  • One-click Download VOD unlocker script in the destination editor and System → Behavior, dropping the .lua straight into OBS's scripts folder.
  • The dashboard steers by detected OBS version: the script is required on OBS 32.2+ (that release locked the built-in VOD Track to Custom services) and the legacy VOD-Track-checkbox / EB+VOD launcher is hidden there; older OBS keeps the built-in method.
  • /obs/register-status now returns obs_version + vod_script_installed; release CI stages the script as a release asset.
  • Wizard step 4 reworked to the script flow, and no longer sets the legacy IVS vod_audio flag.

🎚️ Per-destination audio track routing (#44)

A per-destination Audio track selector (Auto / Both / Track 1 / Track 2). New h264::AudioEgress + flatten_multitrack_audio mirror the existing video path. Each non-Twitch destination keeps a single flattened track (AAC rewritten to legacy 0xAF), falling back to the live track when the chosen one isn't being sent so a destination never goes silent. Only Twitch passes every track through. Send the clean Track 2 to YouTube to dodge copyright while Twitch keeps both.

🩹 0.1.13 + version-nag fix

Bumped to 0.1.13. Fixes the permanent "update available" nag on 0.1.12, whose package version was never bumped (it self-reported as 0.1.11 forever). CHANGELOG restructured (0.1.12 Kick RTMPS + 0.1.13), README EN/ES updated.

Tests

cargo fmt + clippy clean, 282 tests green, release build OK. New coverage for flatten_multitrack_audio (OneTrack / ManyTracks / MTMC), select_audio_bytes (passthrough / per-track / live-track fallback), and audio_track config round-trip.

Notes

  • Defaults to Auto, so existing destinations are unchanged.
  • The in-app script downloader needs a release cut with this CI (the asset must exist at releases/latest/download).

Audio routing (#44): a per-destination "Audio track" selector
(Auto / Both / Track 1 / Track 2). New h264::AudioEgress +
flatten_multitrack_audio; each non-Twitch destination keeps a single
flattened track, falling back to the live track when the chosen one
isn't being sent so a destination never goes silent. Only Twitch passes
every track through (VOD audio). Sends the clean track to YouTube to
dodge copyright while Twitch keeps both.

Twitch VOD audio on the InstantClone service: OBS hardcodes its VOD Track
to the service named "Twitch", so it's unlocked with a bundled OBS Lua
script (optional-vod-unlocker.lua), one-click download from the dashboard
into OBS's scripts folder. The dashboard steers by detected OBS version:
the script is REQUIRED on OBS 32.2+ (that release locked the built-in VOD
Track to Custom services) and the legacy VOD-Track-checkbox / EB+VOD
launcher is hidden there; older OBS keeps the built-in method. Wizard
reworked to the script flow and no longer sets the legacy IVS flag.

Bump to 0.1.13. Also fixes the permanent "update available" nag on
0.1.12, whose package version was never bumped so it self-reported as
0.1.11 forever. CHANGELOG restructured (0.1.12 Kick RTMPS + 0.1.13),
README EN/ES updated, release CI stages the Lua script.
@Soulhackzlol Soulhackzlol self-assigned this Aug 1, 2026
@Soulhackzlol Soulhackzlol added the enhancement New feature or request label Aug 1, 2026
@Soulhackzlol
Soulhackzlol merged commit 30649a2 into main Aug 1, 2026
4 checks passed
@Soulhackzlol

Copy link
Copy Markdown
Owner Author

Added

This added #44 so we closing it :D

@Soulhackzlol
Soulhackzlol deleted the feat/eb-twitch-server branch August 2, 2026 13:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant