Skip to main content

Murali v0.2.0: Shorts and Portrait Video Support

· 2 min read

Murali v0.2.0 adds first-class portrait video support for deliberately composed 9:16 YouTube Shorts and other vertical explanations. Preview, layout, camera projection, and export now share one scene-owned frame, so the composition seen while authoring is the composition that gets rendered.

Compose Directly For Shorts​

Choose the frame before placing objects. The portrait frame uses logical bounds of -4.5..4.5 along X and -8..8 along Y, while the familiar landscape frame remains the default.

use murali::{Frame, Scene};

let mut scene = Scene::new().with_frame(Frame::portrait());

Murali does not attempt automatic responsive layout. Helpers such as to_edge, camera framing, the preview window, and export dimensions all use the selected frame from the beginning.

Width Has One Meaning​

Export configuration now specifies a literal pixel width. Height follows from the scene frame:

[export]
width = 1080

With Frame::portrait(), this produces 1080x1920; with the default landscape frame, a width of 1920 produces 1920x1080. The release also includes Frame::square() for square compositions.

Migration From 0.1​

Code that set both output dimensions should select a scene frame and keep only the width. ExportSettings::height has been removed, and RenderOptions::resolution is now RenderOptions::width.

The new portrait_video example and Video Formats guide show the complete authoring, preview, and export workflow for Shorts.