Interface IClip

所有素材需要实现的接口

素材(Clip)是不同数据类型的抽象,给其他模块提供数据

WebAV 内置了 MP4Clip, AudioClip, ImgClip, MediaStreamClip 等常用素材,用于给 Combinator AVCanvas 提供数据

你只需实现该接口即可自定义素材,拥有最大的灵活度来生成视频内容,比如动画、转场效果等

interface IClip {
    clone: (() => Promise<IClip>);
    destroy: (() => void);
    meta: IClipMeta;
    ready: Promise<IClipMeta>;
    split?: ((time) => Promise<[IClip, IClip]>);
    tick: ((time) => Promise<{
        audio?: Float32Array[];
        state: "done" | "success";
        video?: null | ImageBitmap | VideoFrame;
    }>);
}

Implemented by

Properties

clone: (() => Promise<IClip>)

clone,返回一个新素材

Type declaration

destroy: (() => void)

销毁实例,释放资源

Type declaration

    • (): void
    • Returns void

meta: IClipMeta

数据元数据

ready: Promise<IClipMeta>

当素材准备完成,ready 会切换到 resolved 状态

split?: ((time) => Promise<[IClip, IClip]>)

按指定时间切割,返回该时刻前后两个新素材,常用于剪辑场景按时间分割素材

该方法不会破坏原素材的数据

Type declaration

    • (time): Promise<[IClip, IClip]>
    • Parameters

      • time: number

        时间,微秒

      Returns Promise<[IClip, IClip]>

Returns

tick: ((time) => Promise<{
    audio?: Float32Array[];
    state: "done" | "success";
    video?: null | ImageBitmap | VideoFrame;
}>)

从素材中提取指定时间数据

Type declaration

    • (time): Promise<{
          audio?: Float32Array[];
          state: "done" | "success";
          video?: null | ImageBitmap | VideoFrame;
      }>
    • Parameters

      • time: number

        时间,单位 微秒

      Returns Promise<{
          audio?: Float32Array[];
          state: "done" | "success";
          video?: null | ImageBitmap | VideoFrame;
      }>