calculateMetadata()v4.0.0
calculateMetadata
是一个传递给 <Composition>
的 prop,它接受一个回调函数,该函数可以转换元数据。
如果您:
1 需要根据某些数据使持续时间、宽度、高度或帧速率 动态变化
3 想要添加每个合成的默认编解码器
4 想要在实际渲染开始之前运行一次代码
calculateMetadata()
函数仅调用一次,与渲染的并发无关。
它在一个单独的标签页中运行,作为调用 selectComposition()
的渲染过程的一部分。
用法 / API
定义一个函数,您可以使用 CalculateMetadataFunction
进行类型标注 - 通用参数接受您合成组件的 props:
src/Root.tsxtsx
importReact 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.tsxtsx
importReact 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 }/>);};
作为参数,您会得到一个具有以下属性的对象:
defaultProps
: 仅来自defaultProps
prop 或 Remotion Studio 数据侧边栏的默认 props。props
: 已解析的 props,考虑了输入 props。abortSignal
: 一个AbortSignal
,您可以使用它来中止网络请求,如果 默认 props 在此期间已更改。compositionId
(从 v4.0.98 开始可用): 当前合成的 ID
该函数必须返回一个纯 JSON 可序列化对象,其中可以包含以下属性:
props
可选: 组件接收的 最终 props。它必须具有与此函数接收的props
相同的 形状。props 必须是一个普通对象,不能包含任何非 JSON 可序列化值,除了Date
、Map
、Set
和staticFile()
。durationInFrames
可选: 合成的帧数持续时间width
可选: 合成的像素宽度height
可选: 合成的像素高度fps
可选: 合成的帧速率defaultCodec
可选: 用于合成的默认编解码器。
如果返回一个字段,它将优先于直接传递给组合的 props。返回的 defaultCodec 将比配置文件具有更高的优先级,但比显式传递给 renderMedia() 的选项优先级低,即如果未指定具有更高优先级的内容,则将使用此编解码器渲染组合。
该函数可能是 async
。
该函数必须在 timeout 内解析。
每当 Remotion Studio 中的 props 更改时,该函数将被执行。