import { default as React } from 'react'; import { Store } from '../stores/store'; import { ResourceManage } from '../manage/resourceManage'; import * as PIXI from 'pixi.js'; import type * as types from '../types/data'; export interface InjectParams { parent?: PIXI.DisplayObject; data?: any; } export interface AudioItem { url: string; originURL: string; duration: number; muted: boolean; volume: number; speed: number; curveSpeed?: boolean; curveSpeedLines?: { x: number; y: number; id: string; }[]; curveSpeedName?: string; startTime: number; clipTime: number; fadeInTime: number; fadeOutTime: number; exec: string; } export declare function getCanTransitionArr(data: types.MovieData): types.BaseElement[]; /** * 插入帧数据 */ export declare function insertFrameItem(anime: types.FrameItem, element: types.BaseElement): boolean; /** * 创建帧 */ export declare function createFrameItem(startTime: number, element: types.BaseElement, keyFrameNames: types.KeyFrameName[]): types.FrameItem; /** * 子组件注入数据 * @param children * @param params * @returns */ export declare function childrenInjectProps(params?: InjectParams, children?: JSX.Element | JSX.Element[]): React.FunctionComponentElement<{ parent: PIXI.DisplayObject; data: any; }>[][] | React.FunctionComponentElement<{ parent: PIXI.DisplayObject; data: any; }>[]; /** * 通过id,获取原始数据element,然后同步控制器数据 * 这里要考虑到动画参数 */ export declare function syncControlToElement(elementId: string, store: Store): boolean; /** * 通过id获取element数据 * @param elementId * @returns */ export declare function getElementById(elementId: string, data: types.MovieData): types.BaseElement | types.CaptionElement | undefined; /** * 保留小数点后第n位,非四舍五入 * @param decimal * @param n * @returns */ export declare function truncateDecimals(decimal: number, n: number): number; export interface ElementInfo { elementType: types.ElementType; time: number; trackIndex?: number; duration?: number; } /** * 插入到trackIndex的上面还是下面 * @param trackIndex * @param position * @param data */ export declare function getInsertTrackIndex(targetTrackIndex: number, // 默认是第一条轨道 position: 'up' | 'down' | 'auto', data: types.MovieData, parmas?: ElementInfo): number; /** * 通过trackIndex进行分组 * @param elements * @returns */ export declare function groupByTrackIndex(elements: types.BaseElement[]): types.BaseElement[][]; /** * 获取总时间 * @param movieData * @returns */ export declare function getTotalTime(movieData: types.MovieData): number; /** * 通过ids获取elementData[] 递归获取elements元素 * @param elementIds * @param elements * @returns */ export declare function getElementsByIds(elementIds: string[], elements: types.BaseElement[]): types.BaseElement[] | null; /** * 获取全部的elements */ export declare function getAllElements(elements: types.BaseElement[] | null, data: types.MovieData): types.BaseElement[]; /** * 视频尺寸算法 * 分竖屏和横屏 * p表示纵向像素数量 * k表示横向有多少像素 * 目前常见的器分辨率规格 426 x 240像素(240p) 640 x 360像素(360p) 854 x 480像素(480p) 1280 x 720像素(720p) 1920 x 1080像素(1080p) 2560 x 1440像素(1440p) 3840 x 2160像素(2160p) * * 480p 最小宽度 480 * 720p 最小宽度 720 * 1080p 最小宽度 1080 * 2k 最小宽度 1440 * 4k 最小宽度 2160 * @params ratio 格式 1:1 16:9 * * 输入清晰度 + 比例 计算出视频的尺寸,通过尺寸可以计算出scale */ export declare function geVideoSizeResolution(type: types.Resolution, ratio: types.VideoRatio): { bitrate: number; width: number; height: number; } | false; /** * 音频变速滤镜处理 * @param {*} speed 目标速度 * @returns */ export declare function atempo(speed: number): string; /** * 通过medias获取ffmpeg命令 * @param medias * @returns */ export declare function getFFmpegAudioCMD(medias: AudioItem[], type?: 'server' | 'local'): Promise<{ files: { name: string; data: any; }[]; arguments: string[]; fileType: 'audio/mp3'; }>; export declare function fetchFile(url: String): Promise; /** * * @param mdata * @param movie:Store 来源: import { Store } from './stores/store'; * @param times 时间区间 * @returns */ export declare function getAllMedia(mdata: types.MovieData, movie: any, times?: [number, number]): any[]; /** * 给个最小值,宽高不超过此值,等比例返回一个新的尺寸 * @param minSize * @param param1 * @returns */ export declare function getAutoSize(minSize: number, [w, h]: [number, number]): { width: number; height: number; }; /** * 已知新视频的尺寸,适配视频 * 宽度或者高度最大适配 * @param data * @param size 新的尺寸 */ export declare function fitVideoSize(data: types.MovieData, size: { width: number; height: number; }, resourceManage: ResourceManage): void; /** * 通过类型获取元素 * @param types * @returns */ export declare function getElementDataByTypes(types: types.ElementType[], data: types.MovieData): types.BaseElement[]; /** * 获取有效音频数量 */ export declare function getEffectiveAudio(moveData: types.MovieData): number; /** * 删除元素 * @param ids */ export declare function deleteElementByIds(ids: string[], data: types.MovieData): void; /** * 已知item,添加元素 */ export declare function addElement(item: types.BaseElement | types.CameraElement | types.CaptionElement, type: types.ElementType | 'camera' | 'caption', data: types.MovieData): void; export declare function drawCameraBg(size: { width: number; height: number; }, lineWidth?: number): HTMLCanvasElement;