Skip to main content

calculateMetadata()v4.0.0

calculateMetadata 是一个传递给 <Composition> 的 prop,它接受一个回调函数,该函数可以转换元数据。

如果您:

需要根据某些数据使持续时间、宽度、高度或帧速率 动态变化


想要转换传递给合成的 props,例如执行 数据获取


想要添加每个合成的默认编解码器


想要在实际渲染开始之前运行一次代码

calculateMetadata() 函数仅调用一次,与渲染的并发无关。
它在一个单独的标签页中运行,作为调用 selectComposition() 的渲染过程的一部分。

用法 / API

定义一个函数,您可以使用 CalculateMetadataFunction 进行类型标注 - 通用参数接受您合成组件的 props:

src/Root.tsx
tsx
import React from "react";
import { CalculateMetadataFunction, Composition } from "remotion";
import { MyComponent, MyComponentProps } from "./MyComp";
 
const calculateMetadata: CalculateMetadataFunction<MyComponentProps> = ({
props,
defaultProps,
abortSignal,
}) => {
return {
// Change the metadata
durationInFrames: props.duration,
// or transform some props
props,
// or add per-composition default codec
defaultCodec: "h264",
};
};
 
export const Root: 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.tsx
tsx
import React from "react";
import { CalculateMetadataFunction, Composition } from "remotion";
import { MyComponent, MyComponentProps } from "./MyComp";
 
const calculateMetadata: CalculateMetadataFunction<MyComponentProps> = ({
props,
defaultProps,
abortSignal,
}) => {
return {
// Change the metadata
durationInFrames: props.duration,
// or transform some props
props,
// or add per-composition default codec
defaultCodec: "h264",
};
};
 
export const Root: React.FC = () => {
return (
<Composition
id="MyComp"
component={MyComponent}
durationInFrames={300}
fps={30}
width={1920}
height={1080}
defaultProps={{
text: "Hello World",
duration: 1,
}}
calculateMetadata={calculateMetadata}
/>
);
};

作为参数,您会得到一个具有以下属性的对象:

该函数必须返回一个纯 JSON 可序列化对象,其中可以包含以下属性:

  • props 可选: 组件接收的 最终 props。它必须具有与此函数接收的 props 相同的 形状。props 必须是一个普通对象,不能包含任何非 JSON 可序列化值,除了 DateMapSetstaticFile()
  • durationInFrames 可选: 合成的帧数持续时间
  • width 可选: 合成的像素宽度
  • height 可选: 合成的像素高度
  • fps 可选: 合成的帧速率
  • defaultCodec 可选: 用于合成的默认编解码器。

如果返回一个字段,它将优先于直接传递给组合的 props。返回的 defaultCodec 将比配置文件具有更高的优先级,但比显式传递给 renderMedia() 的选项优先级低,即如果未指定具有更高优先级的内容,则将使用此编解码器渲染组合。

该函数可能是 async

该函数必须在 timeout 内解析。

每当 Remotion Studio 中的 props 更改时,该函数将被执行。

另请参阅