import type { RendererProps } from 'jamis-core'; import type { BaseSchema, SchemaClassName, SchemaUrlPath } from '../types'; /** * 视频播放器 */ export interface VideoSchema extends BaseSchema { /** * 指定为视频类型 */ type: 'video'; /** * 是否自动播放 */ autoPlay?: boolean; /** * 如果显示切帧,通过此配置项可以控制每行显示多少帧 */ columnsCount?: number; /** * 设置后,可以显示切帧.点击帧的时候会将视频跳到对应时间。 * * frames: { * '01:22': 'http://domain/xxx.jpg' * } */ frames?: { [propName: string]: string; }; /** * 配置帧列表容器className */ framesClassName?: SchemaClassName; /** * 如果是实时的,请标记一下 */ isLive?: boolean; /** * 点击帧画面时是否跳转视频对应的点 * * @default true */ jumpFrame?: boolean; /** * 是否初始静音 */ muted?: boolean; /** * 配置播放器 className */ playerClassName?: SchemaClassName; /** * 视频封面地址 */ poster?: SchemaUrlPath; /** * 是否将视频和封面分开显示 */ splitPoster?: boolean; /** * 视频播放地址 */ src?: SchemaUrlPath; /** * 视频类型如: video/x-flv */ videoType?: string; /** * 视频比率 */ aspectRatio?: 'auto' | '4:3' | '16:9'; /** * 视频速率 */ rates?: Array; /** * 跳转到帧时,往前多少秒。 */ jumpBufferDuration?: number; /** * 默认播放的时候到了下一帧会继续播放,同时高亮下一帧。 * 如果配置这个则会停止播放,等待用户选择新的区间再播放。 */ stopOnNextFrame?: boolean; } export interface VideoProps extends RendererProps, Omit { columnsCount: number; } export interface FlvSourceProps { src?: string; type?: string; video?: any; config?: object; manager?: any; isLive?: boolean; autoPlay?: boolean; actions?: any; order?: number; setError: (error: string) => void; } export interface HlsSourceProps { src?: string; type?: string; video?: any; config?: object; manager?: any; isLive?: boolean; autoPlay?: boolean; actions?: any; order?: number; } /** * Audio 音频组件。 * */ export interface AudioSchema extends BaseSchema { /** * 指定为音频播放器 */ type: 'audio'; /** * 是否是内联模式 */ inline?: boolean; /** * "视频播放地址, 支持 $ 取变量。 */ src?: SchemaUrlPath; /** * 是否循环播放 */ loop?: boolean; /** * 是否自动播放 */ autoPlay?: boolean; /** * 配置可选播放倍速 */ rates?: Array; /** * 可以配置控制器 */ controls?: Array<'rates' | 'play' | 'time' | 'process' | 'volume'>; }