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'; type Range = { start: number; end: number; }; interface AudioLayerType { /** * 媒体资源类型 */ mediaFormType: number; /** * 原始范围 */ srcRange?: Range; /** * 裁剪范围 */ trimRange?: Range; /** * 目标位置起点 */ dstPos?: number; /** * 是否静音 */ silence: boolean; /** * 是否无穷循环 */ isInfinite: boolean; parent: TTrack; createAudioComp(): 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: AudioLayerType) => void; } type AudioLayerProps = { mediaFormType: number; uuid?: string; assetInfo?: Partial; dstPos?: number; trimRange?: Range; srcRange?: Range; speed?: number; silence?: boolean; audioGain?: number; isInfinite?: boolean; isPrimal?: boolean; } & BaseLayerProps; declare class AudioLayer extends Base implements AudioLayerType { srcRange: Range | undefined; trimRange?: Range | undefined; speed?: number; dstPos: number; silence: boolean; parent: TTrack; assetInfo: Partial; mediaFormType: number; isInfinite: boolean; isPrimal: boolean; onChange: (layer: AudioLayerType) => void; constructor(namespace: string, props: AudioLayerProps); /** * 资源初始化 */ init(options?: Options): Promise; /** * 创建音频元素 */ createAudioComp: () => 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; /** * 设置源范围 */ setSrcRange(range: Range): void; /** * 设置裁剪范围 */ setTrimRange(range: Range, syncPlaceholder?: boolean): void; /** * 设置变速 */ setSpeed(speed: number | undefined, withRefresh?: boolean, callback?: (layer: AudioLayer) => void): void; /** * 设置目标起点 */ setDstPos(pos: number): void; /** * 设置媒体源 */ setMediaSourceToComp: (comp: AECompWrapperInstance, path: string) => Promise; /** * 重置Layer */ resetLayer(): void; /** * 获取草稿 */ getLayerDraft(): AudioLayerProps; /** * 拷贝合成 */ duplicate(): AudioLayer; } export { AudioLayer }; export type { AudioLayerProps };