import { AECompWrapperInstance } from '../../core/resource/type-helper/AECompWrapper/instance.js'; import { Options } from '../../utils/EngineManager/baseEngine.js'; import Base, { BaseLayerProps } from '../BaseLayer/index.js'; import { TTrack } from '../index.js'; import { AssetInfo } from '../type.js'; interface PostionWithPartial { scale?: Partial<{ x: number; y: number; z: number; }>; shift?: Partial<{ x: number; y: number; z: number; }>; anchor?: Partial<{ x: number; y: number; z: number; }>; angle?: Partial<{ x: number; y: number; z: number; }>; } type Range = { start: number; end: number; }; interface VideoLayerType { /** * 媒体资源类型 */ mediaFormType: number; /** * 原始范围 */ srcRange?: Range; /** * 裁剪范围 */ trimRange?: Range; /** * 目标位置起点 */ dstPos?: number; /** * 是否静音 */ silence: boolean; parent: TTrack; createVideoComp(): AECompWrapperInstance; setSrcRange(range: Range): void; setTrimRange(range: Range): void; setDstPos(pos: number): void; setPlaceholderComp(comp: AECompWrapperInstance): void; setMediaSourceToComp(comp: AECompWrapperInstance, path: string): Promise; assetInfo: Partial; onChange: (layer: VideoLayerType) => void; } type VideoLayerProps = { mediaFormType: number; uuid?: string; assetInfo?: Partial; transitionPath?: string; dstPos?: number; layerId?: number; speed?: number; trimRange?: Range; srcRange?: Range; crop?: { top: number; left: number; bottom: number; right: number; }; silence?: boolean; audioGain?: number; isPrimal?: boolean; position?: PostionWithPartial; keepLastFrame?: boolean; } & BaseLayerProps; declare class VideoLayer extends Base implements VideoLayerType { srcRange: Range | undefined; trimRange?: Range | undefined; speed?: number; dstPos: number; silence: boolean; parent: TTrack; assetInfo: Partial; transitionPath: string; mediaFormType: number; isPrimal: boolean; position?: PostionWithPartial; crop?: { top: number; left: number; bottom: number; right: number; } | undefined; keepLastFrame?: boolean; onChange: (layer: VideoLayerType) => void; constructor(namespace: string, props: VideoLayerProps); /** * 资源初始化 */ init(options?: Options): Promise; /** * 创建视频元素 */ createVideoComp: () => AECompWrapperInstance; /** * 设置占位容器内元素 */ setContentElementComp(comp: AECompWrapperInstance): void; /** * 获取占位容器内元素 */ getContentElementComp(): AECompWrapperInstance; /** * 创建视频占位容器 */ setPlaceholderComp(): void; refreshAssetsMapItem: (assetId: string, fileId: string) => Promise; runWithDBPath: (path: string, options?: Options, completed?: boolean) => Promise; /** * 加载本地媒体文件 */ loadFile: (file: File, options?: Options) => Promise; /** * 加载远程媒体文件 */ loadUrl: (url: string, options?: Options) => Promise; /** * 设置转场 */ setTransition: (themePath: string, callback?: () => void) => Promise<((cb?: () => void) => Promise) | undefined>; /** * 撤销转场 */ removeTransition: (cb?: () => void) => Promise; /** * 是否有转场 */ hasTrsition(): boolean; /** * 设置裁剪 */ setCrop(cropData: { top: number; bottom: number; left: number; right: number; }, callback?: () => void): void; /** * 清除裁剪 */ clearCrop(callback?: () => void): void; /** * 设置源范围 */ setSrcRange(range: Range): void; /** * 设置裁剪范围 */ setTrimRange(range: Range, syncPlaceholder?: boolean): void; /** * 设置目标起点 */ setDstPos(pos: number): void; /** * 获取图层位置信息 */ getPosition: () => { scale: { x: number; y: number; z: number; }; shift: { x: number; y: number; z: number; }; anchor: { x: number; y: number; z: number; }; angle: { x: number; y: number; z: number; }; }; /** * 设置字幕位置 */ changeTransform: (position: PostionWithPartial, withRefresh?: boolean) => void; /** * 设置变速 */ setSpeed(speed: number | undefined, withRefresh?: boolean, callback?: (layer: VideoLayer) => void): void; /** * 设置媒体源 */ setMediaSourceToComp: (comp: AECompWrapperInstance, path: string) => Promise; /** * 获取当前图层位置信息 */ getCurrentPosition(): { width: number; height: number; x: number; y: number; scaleX: number; scaleY: number; left: number; top: number; }; /** * 获取缩略图 */ getThumbnailList: (count: number | undefined, callback: (data: { index: number; data: ImageBitmap; }) => void) => void; /** * 重置Layer */ resetLayer(): void; /** * 获取草稿 */ getLayerDraft(): VideoLayerProps; /** * 拷贝合成 */ duplicate(): VideoLayer; } export { VideoLayer }; export type { VideoLayerProps };