calculateMetadata()v4.0.0
calculateMetadata is a prop that gets passed to <Composition> and takes a callback function which may transform metadata.
Use it if you:
Usage / API
Define a function, you may type it using CalculateMetadataFunction - the generic argument takes the props of the component of your composition:
src/Root.tsxtsximportReact from "react";import {CalculateMetadataFunction ,Composition } from "remotion";import {MyComponent ,MyComponentProps } from "./MyComp";constcalculateMetadata :CalculateMetadataFunction <MyComponentProps > = ({props ,defaultProps ,abortSignal ,}) => {return {// Change the metadatadurationInFrames :props .duration ,// or transform some propsprops ,// or add per-composition default codecdefaultCodec : "h264",};};export constRoot :React .FC = () => {return (<Composition id ="MyComp"component ={MyComponent }durationInFrames ={300}fps ={30}width ={1920}height ={1080}defaultProps ={{text : "Hello World",duration : 1,}}calculateMetadata ={calculateMetadata }/>);};
src/Root.tsxtsximportReact from "react";import {CalculateMetadataFunction ,Composition } from "remotion";import {MyComponent ,MyComponentProps } from "./MyComp";constcalculateMetadata :CalculateMetadataFunction <MyComponentProps > = ({props ,defaultProps ,abortSignal ,}) => {return {// Change the metadatadurationInFrames :props .duration ,// or transform some propsprops ,// or add per-composition default codecdefaultCodec : "h264",};};export constRoot :React .FC = () => {return (<Composition id ="MyComp"component ={MyComponent }durationInFrames ={300}fps ={30}width ={1920}height ={1080}defaultProps ={{text : "Hello World",duration : 1,}}calculateMetadata ={calculateMetadata }/>);};
As argument, you get an object with the following properties:
defaultProps: Only the default props, taken from thedefaultPropsprop or the Remotion Studio Data sidebar.props: The resolved props, taking input props into account.abortSignal: AnAbortSignalwhich you can use to abort network requests if the default props have been changed in the meanwhile.
The function must return an object, which can contain the following properties:
propsoptional: The final props the component receives. It must have the same shape as thepropsreceived by this function.durationInFramesoptional: The duration of the composition in frameswidthoptional: The width of the composition in pixelsheightoptional: The height of the composition in pixelsfpsoptional: The frames per second of the compositiondefaultCodecoptional: The default codec to use for the composition.
If you return a field, it will take precendence over the props directly passed to the composition. The defaultCodec returned will have a higher priority than the config file, but less priority than explicitly passing the option to renderMedia() i.e. the composition will be rendered with this codec if nothing with higher priority was specified.
The function may be async.
The function must resolve within the timeout.
The function will get executed every time the props in the Remotion Studio changes.