Skip to main content

@twick/browser-render / Exports

@twick/browser-render

Table of contents​

References​

Interfaces​

Functions​

References​

default​

Renames and re-exports renderTwickVideoInBrowser

Functions​

downloadVideoBlob​

▸ downloadVideoBlob(videoBlob, filename?): void

Helper function to download a video blob as a file

Parameters​

NameTypeDefault valueDescription
videoBlobBlobundefinedThe video blob to download
filenamestring'video.mp4'The desired filename (default: 'video.mp4')

Returns​

void

Example

const blob = await renderTwickVideoInBrowser(projectData);
downloadVideoBlob(blob, 'my-video.mp4');

Defined in​

browser-renderer.ts:898


normalizeVideoBlob​

▸ normalizeVideoBlob(input, options?): Promise<NormalizeVideoResult>

Normalize a video Blob into a browser- and WebCodecs-friendly MP4.

Typical usage:

  • Call this after file upload (e.g. from an )
  • Upload the returned Blob to your storage (S3, etc.)
  • Use that URL in your Twick project instead of the raw source

Parameters​

NameType
inputBlob
optionsNormalizeVideoOptions

Returns​

Promise<NormalizeVideoResult>

Defined in​

audio/video-normalizer.ts:56


renderTwickVideoInBrowser​

▸ renderTwickVideoInBrowser(config): Promise<Blob>

Renders a Twick video directly in the browser without requiring a server. Uses WebCodecs API for encoding video frames into MP4 format.

This function uses the same signature as the server renderer for consistency.

Parameters​

NameTypeDescription
configBrowserRenderConfigConfiguration object containing variables and settings

Returns​

Promise<Blob>

Promise resolving to a Blob containing the rendered video

Example

import { renderTwickVideoInBrowser } from '@twick/browser-render';

// Using default visualizer project
const videoBlob = await renderTwickVideoInBrowser({
variables: {
input: {
properties: { width: 1920, height: 1080, fps: 30 },
tracks: [
// Your tracks configuration
]
}
},
settings: {
width: 1920,
height: 1080,
fps: 30,
quality: 'high',
onProgress: (progress) => console.log(`Rendering: ${progress * 100}%`),
}
});

// Using custom project
import myProject from './my-custom-project';
const videoBlob = await renderTwickVideoInBrowser({
projectFile: myProject, // Must be an imported Project object
variables: { input: {...} },
settings: {...}
});

// Download the video
const url = URL.createObjectURL(videoBlob);
const a = document.createElement('a');
a.href = url;
a.download = 'video.mp4';
a.click();
URL.revokeObjectURL(url);

Defined in​

browser-renderer.ts:537


useBrowserRenderer​

▸ useBrowserRenderer(options?): UseBrowserRendererReturn

React hook for rendering Twick videos in the browser

Uses the same pattern as the server renderer for consistency.

Parameters​

NameTypeDescription
optionsUseBrowserRendererOptionsRendering options

Returns​

UseBrowserRendererReturn

Renderer state and control functions

Example

import { useBrowserRenderer } from '@twick/browser-render';

// Using default visualizer project
function MyComponent() {
const { render, progress, isRendering, videoBlob, download } = useBrowserRenderer({
width: 1920,
height: 1080,
fps: 30,
autoDownload: true,
});

const handleRender = async () => {
await render({
input: {
properties: { width: 1920, height: 1080, fps: 30 },
tracks: [
// Your tracks configuration
]
}
});
};

return (
<div>
<button onClick={handleRender} disabled={isRendering}>
{isRendering ? `Rendering... ${(progress * 100).toFixed(0)}%` : 'Render Video'}
</button>
{videoBlob && !autoDownload && (
<button onClick={() => download('my-video.mp4')}>Download</button>
)}
</div>
);
}

// Using custom project (must import it first)
import myProject from './my-project';

function CustomProjectComponent() {
const { render } = useBrowserRenderer({
projectFile: myProject, // Pass the imported project object
width: 1920,
height: 1080,
});

// ... rest of component
}

Defined in​

hooks/use-browser-renderer.ts:117