jamis
Version:
一种支持通过JSON配置方式生成页面的组件库
145 lines (144 loc) • 3.12 kB
TypeScript
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<number>;
/**
* 跳转到帧时,往前多少秒。
*/
jumpBufferDuration?: number;
/**
* 默认播放的时候到了下一帧会继续播放,同时高亮下一帧。
* 如果配置这个则会停止播放,等待用户选择新的区间再播放。
*/
stopOnNextFrame?: boolean;
}
export interface VideoProps extends RendererProps, Omit<VideoSchema, 'className'> {
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<number>;
/**
* 可以配置控制器
*/
controls?: Array<'rates' | 'play' | 'time' | 'process' | 'volume'>;
}