From 7f163ce9080a4f93e4682a3a88b5d6b5aff65a3d Mon Sep 17 00:00:00 2001 From: Jonny Burger Date: Fri, 13 Mar 2026 09:56:04 +0100 Subject: [PATCH 1/3] Fix deprecated link in getAudioDurationInSeconds docs Point to getMediaMetadata() instead of parseMedia() as the recommended replacement. Co-Authored-By: Claude Opus 4.6 --- packages/docs/docs/get-audio-duration-in-seconds.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/docs/docs/get-audio-duration-in-seconds.mdx b/packages/docs/docs/get-audio-duration-in-seconds.mdx index 57f7be4cb31..c7344a3e2e6 100644 --- a/packages/docs/docs/get-audio-duration-in-seconds.mdx +++ b/packages/docs/docs/get-audio-duration-in-seconds.mdx @@ -6,7 +6,7 @@ crumb: '@remotion/media-utils' --- :::warning Deprecated -This function has been deprecated. Use [`parseMedia()`](/docs/media-parser/parse-media) instead, which is faster and supports more formats. +This function has been deprecated. Use [`getMediaMetadata()`](/docs/mediabunny/metadata) instead, which is faster and supports more formats. ::: _Part of the `@remotion/media-utils` package of helper functions._ From 4236bea0ba391110c70f933257b8e2e253deb82d Mon Sep 17 00:00:00 2001 From: Jonny Burger Date: Fri, 13 Mar 2026 11:09:10 +0100 Subject: [PATCH 2/3] add testbed for buffer during a video --- packages/example/src/NewVideoBufferState.tsx | 71 ++++++++++++++++++++ packages/example/src/Root.tsx | 8 ++- 2 files changed, 76 insertions(+), 3 deletions(-) create mode 100644 packages/example/src/NewVideoBufferState.tsx diff --git a/packages/example/src/NewVideoBufferState.tsx b/packages/example/src/NewVideoBufferState.tsx new file mode 100644 index 00000000000..ba405b1a194 --- /dev/null +++ b/packages/example/src/NewVideoBufferState.tsx @@ -0,0 +1,71 @@ +import {Video} from '@remotion/media'; +import React, {useEffect} from 'react'; +import {Composition, Sequence, useBufferState, useCurrentFrame} from 'remotion'; +import {calculateMetadataFn} from './NewVideo'; + +const src = 'https://remotion.media/video.mp4'; + +const BUFFER_START_FRAME = 60; +const BUFFER_DURATION_MS = 5000; + +const ForeignBufferElement: React.FC = () => { + const buffer = useBufferState(); + const frame = useCurrentFrame(); + + useEffect(() => { + if (frame === BUFFER_START_FRAME) { + const handle = buffer.delayPlayback(); + + const timeout = setTimeout(() => { + handle.unblock(); + }, BUFFER_DURATION_MS); + + return () => { + clearTimeout(timeout); + handle.unblock(); + }; + } + }, [buffer, frame]); + + return ( +
= BUFFER_START_FRAME ? 'red' : 'green', + color: 'white', + padding: '8px 16px', + fontFamily: 'sans-serif', + fontSize: 14, + borderRadius: 4, + zIndex: 1000, + }} + > + {frame >= BUFFER_START_FRAME + ? `Buffering (triggered at frame ${BUFFER_START_FRAME})...` + : `Will buffer at frame ${BUFFER_START_FRAME} (current: ${frame})`} +
+ ); +}; + +const NewVideoBufferStateComponent: React.FC = () => { + return ( + <> +