diff --git a/.gitignore b/.gitignore index d2ff20141ceed86d87c0ea5d99481973005bab2b..fb678ac54abebd982b332919bceca34d70f78e50 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ /.clang-format /.clang-tidy **/.test -/.appanalyzer \ No newline at end of file +/.appanalyzer +/build-profile.json5 \ No newline at end of file diff --git a/README.md b/README.md index 9e0af8caa423198e4484212dcd018dea77e402fb..fc9caf7c415e9f435973ea66e2fa6f74c1401924 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,9 @@ SwipePlayer三方库通过SwipePlayer组件以及SwipePlayerController控制器 + 支持全屏/退出全屏播放,支持定义全屏播放界面组件 + 支持进度条(通过组件形式提供) +## 效果图 + + ## 依赖版本 HarmonyOS 5.0.0 Release及以上 + 手机版本:5.0.0.102 @@ -29,7 +32,7 @@ ohpm install @hadss/swipeplayer ```json5 { "dependencies": { - "@hadss/swipeplayer": "^1.0.0-rc.2" + "@hadss/swipeplayer": "^1.0.0-rc.3" } } ``` @@ -267,6 +270,7 @@ export struct VerticalScreenComponent { } } ``` + ### 自定义滑动切换组件(广告,图片轮播等) 短视频切换场景下除了视频播放场景外还可能存在广告页,图片轮播等场景和其他一些不可预期的页面,SwipePlayer提供自定义滑动切换组件的能力, @@ -338,6 +342,7 @@ export function Advert(dataObj: ESObject, playerSession: PlayerSession | undefin Advert() } ``` + ### 长按视频3s弹出倍速播放配置,选择倍速后弹出toast弹框提示并倍速播放视频 短视频滑动还涉及一些手势操作的业务场景,比如长按3s弹出倍速页面,可以通过组件提供的Gesture手势事件注册能力实现, @@ -402,6 +407,7 @@ export function FastSpeedBuilder(swipeData: SwipeData, playerLayoutSize: PlayerL FastSpeed({ swipeData: swipeData, closeDialog: closeDialog }); } ``` + ### 点击评论按钮弹出评论页面,包含视频(缩放)上移动画,跟手动画 SwipePlayerController会封装点击页面弹框及视频动画并对外提供调用方法供应用使用,使用该方法时会弹出空白弹框,用户可以自定义弹框内容。 @@ -470,8 +476,8 @@ export struct Comments { .height('70%'); } } - ``` + ### 横向视频全屏播放 播放横向适配时,会额外显示全屏播放按钮,点击后全屏播放,并显示返回键,标题,进度条等内容,使用SwipePlayerController提供的全屏和退出全屏能力结合自定义组件videoBuilder实现。 @@ -508,6 +514,7 @@ export struct VerticalScreenComponent { } } ``` + ### 实现自定义进度条 某些情况下应用不想使用默认进度条组件,需要实现自定义的进度条,可以通过options配置禁用显示默认进度条,然后通过videoBuilder结合AVPlayer监听事件注册实现自定义进度条。 @@ -569,103 +576,10 @@ export function viewScreen(dataObj: ESObject, playerSession: PlayerSession | und }); } ``` + ## SwipePlayer接口和属性列表 -### SwipePlayer: 短视频流畅点播切换入口组件 -| 参数 | 说明 | -|------------------------------------|--------------------------------------------------| -| dataSource: SwipePlayerIDataSource | 用于LazyForEach遍历的SwipePlayer的播放源数据对象 | -| controller: SwipePlayerController | SwipePlayer的控制器,提供全屏/退出全屏,弹框/关闭弹框及AVPlayer相关控制能力 | -| options: SwipePlayerOption | SwipePlayer的参数配置,提供缓存数 | - -### SwipePlayerIDataSource: LazyForEach遍历的数据源对象 -| 参数 | 说明 | -|----------------------------------|---------------------| -| dataSources: Array\ | SwipePlayer的播放源数据列表 | - -| 接口原型 | 参数 | 返回值 | 接口描述 | -|------------|---------------------------------------|------------|------------------| -| totalCount | | number | SwipePlayer播放源总数 | -| getData | index: number | PlayerData | 获取数据源对象 | -| pushData | data: PlayerData; Array\ | void | 动态添加数据源 | -| reloadData | data: Array\ | void | 重新刷新数据源 | - -### PlayerData:视频播放类型或自定义类型数据源接口(需开发者实现接口) -| 参数 | 说明 | -|----------------------------------------|----------------------------------------------------------------------| -| getId:()=>string | 获取数据源Id | -| getType:()=>string | 获取短视频播放源类型 | -| getSource:()=>string;undefined | 获取短视频播放源路径,支持http/https | -| getCover:()=>string;Resource;undefined | 获取视频封面,支持gif(在AVPlayer的initialized,prepared,playing期间显示,不设置默认显示黑屏画面) | - -### 配置参数: SwipePlayerOptions -| 参数 | 说明 | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------| -| cachedCount: number | LazyForEach缓存数量,范围0-3,默认1 | -| autoPlay: boolean | 是否自动切换到下一个视频 | -| videoPlayer: VideoPlayer | 视频配置项 | -| viewBuilder: (type: string, isFullScreen?: boolean) => (dataObj: ESObject, playerSession: PlayerSession \| undefined, swipePlayerController: SwipePlayerController) => void | 自定义组件Builder函数 | -| swiperCallBack?: SwiperCallback | SwipePlayer包装的Swiper组件的一些滑动回调注册 | - -### VideoPlayer: 视频配置项 - -| 参数 | 说明 | -|-------------------------|----------------| -| playIcon?: ResourceStr | 播放按钮 | -| pauseIcon?: ResourceStr | 视频全屏状态下显示的暂停按钮 | - -### SwiperCallback: Swiper回调注册 -| 参数 | 说明 | -|--------------------------------------------------------------------------------------------------|-------------------------------| -| onAnimationStart?: (index: number, targetIndex: number, extraInfo: SwiperAnimationEvent) => void | 对应Swiper组件的onAnimationStart回调 | -| onAnimationEnd?: (index: number, extraInfo: SwiperAnimationEvent) => void | 对应Swiper组件的onAnimationEnd回调 | -| onChange?: (index: number) => void | 对应Swiper组件的onChange回调 | - -### SwipePlayerController: SwipePlayer组件的控制器 -| 接口原型 | 参数 | 返回值 | 接口描述 | -|-------------------|---------------------------------------------------------------------------------------------------------------------------|-------------------|---------------------------------------------------------| -| getAVPlayer | | media.AVPlayer | 获取当前播放的AVPlayer对象,存在获取不到的情况 | -| async play | | void | 播放当前视频,有状态校验 | -| async pause | | void | 暂停播放当前视频,有状态校验 | -| seek | timeMs: number | void | 跳转到指定位置播放,有状态校验 | -| release | | void | 释放当前的AVPlayer对象,有状态校验 | -| setSpeed | speed: media.PlaybackSpeed | void | 设置视频的播放速度,有状态校验 | -| requestFullScreen | | void | 请求全屏播放,会隐藏videoBuilder组件 | -| exitFullScreen | | void | 退出全屏播放,会显示videoBuilder组件 | -| openDialog | builder: DialogBuilder, animationCallback: OpenAnimationCallback | void | 打开自定义弹框页面,支持传入自定义动画 | -| openDialog | builder: DialogBuilder, direction:PushDirection, duration:number, withVideoAnimator:boolean, closeMaskCallback?: ()=>void | void | 打开自定义弹窗,支持传入动画方向,动画时长,是否压缩视频,以及点击遮罩层关闭探查时回调 | -| closeDialog | closeAnimationCallback: CloseAnimationCallback | void | 关闭自定义页面弹框(可支持自定义动画) | -| backPressListener | | BackPressListener | 提供在onBackPress注册函数,侧滑返回时能关闭弹窗 | - -### DialogBuilder: 弹窗wrappedBuilder - -| 参数 | 返回值 | 接口描述 | -|--------------------------------------------------------------------------------------------|------|-------------| -| dialogBuilder: () => WrappedBuilder<\[ESObject, PlayerLayoutSize, () => void, () => void]> | void | 弹窗Builder | -| dataObj: ESObject | | 弹窗Builder参数 | - -### PlayerLayoutSize: 视频布局属性 - -| 接口原型 | 参数 | 返回值 | 接口描述 | -|------------------------|-------------------------------------|------------------|----------------| -| updatePlayerWidth | playerWidth: number \| string | void | 修改视频宽度 | -| getPlayerWidth | | number \| string | 获取视频宽度 | -| updatePlayerHeight | playerHeight: number \| string | void | 修改视频高度 | -| getPlayerHeight | | number \| string | 获取视频高度 | -| updatePlayerPositionX | playerPositionX: number \| string | void | 修改视频绝对定位X轴偏移量 | -| getPlayerPositionX | | number \| string | 获取视频绝对定位X轴偏移量 | -| updatePlayerPositionY | playerPositionY: number \| string | void | 修改视频绝对定位Y轴偏移量 | -| getPlayerPositionX | | number \| string | 获取视频绝对定位Y轴偏移量 | -| updateXComponentWidth | xComponentWidth: number \| string | void | 修改XComponent宽度 | -| getXComponentWidth | | number \| string | 获取XComponent宽度 | -| updateXComponentHeight | xComponentHeight: number \| string | void | 修改XComponent高度 | -| getXComponentHeight | | number \| string | 获取XComponent高度 | - -### AVPlayerListener: 储存AVPlayer对象及其对应的事件 - -| 接口原型 | 参数 | 返回值 | 接口描述 | -|---------|----------------------------------------------------|------|------| -| onEvent | key: string, callback: (...args: ESObject) => void | void | 注册回调 | +[查看详情](./docs/Reference.md) ## 开源协议 -本项目基于 Apache License 2.0,请自由地享受和参与开源。 \ No newline at end of file +本项目基于 [Apache License 2.0](./LICENSE),请自由地享受和参与开源。 \ No newline at end of file diff --git a/SwipePlayer/CHANGELOG.md b/SwipePlayer/CHANGELOG.md index 1fd10f4c01edfc39ab577a468285405efbc9f5d0..9302c9842dd7b5b554a0c41993c49d62c1a58aa1 100644 --- a/SwipePlayer/CHANGELOG.md +++ b/SwipePlayer/CHANGELOG.md @@ -1,17 +1,21 @@ # 更新记录 -## 1.0.0-rc.2 (2024.12.5) +## 1.0.0-rc.3 (2024.12.24) +### Features ++ 增加配置项autoPlay,设置当前视频播放完后是否自动滑动到下一视频 ++ 默认进度条样式修改 +### Bug Fixes ++ 全屏播放时,点击屏幕的逻辑优化 + +## 1.0.0-rc.2 (2024.12.5) ### Features + README更新 ## 1.0.0-rc.1 (2024.12.5) - ### Features + 优化视频加载,优先加载当前播放的视频源,README更新 ## 1.0.0-rc.0 (2024.11.26) - ### Initial - + 初版发布 diff --git a/SwipePlayer/README.md b/SwipePlayer/README.md index 1f11920ce03e09bc630b6787d0a4a57c04bc6751..f871871a20efb13e3ba682308acaa59633d929b3 100644 --- a/SwipePlayer/README.md +++ b/SwipePlayer/README.md @@ -2,8 +2,8 @@ ## SwipePlayer简介 SwipePlayer三方库主要聚焦短视频流畅点播切换场景,提供短视频上下滑动切换和快速起播能力,同时通过自定义能力的开放满足应用不同短视频滑动场景的业务诉求。 -SwipePlayer底层封装了系统AVPlayer及XComponent、Swiper、LazyForEach组件,基于AVPlayer的预创建,预加载以及提前起播实现了快速起播的能力。 -SwipePlayer三方库通过对外提供一个SwipePlayer组件以及SwipePlayerController控制器对外提供能力,包括上下滑动、快速起播、动态添加数据源、 +SwipePlayer底层封装了系统AVPlayer及XComponent、Swiper、LazyForEach组件,基于AVPlayer的预创建、预加载以及提前起播实现了快速起播的能力。 +SwipePlayer三方库通过SwipePlayer组件以及SwipePlayerController控制器对外提供能力,包括上下滑动、快速起播、动态添加数据源、 自定义跟随视频滑动的组件、自定义滑动组件切换、全屏和弹框等,目的是让开发者在开发过程中无需关注繁琐的AVPlayer创建、管理和播放逻辑,可以基于SwipePlayer 库能力快速实现短视频流畅滑动的场景开发体验,使开发者可以更加聚焦实际场景业务的开发。 @@ -16,6 +16,9 @@ SwipePlayer三方库通过对外提供一个SwipePlayer组件以及SwipePlayerCo + 支持全屏/退出全屏播放,支持定义全屏播放界面组件 + 支持进度条(通过组件形式提供) +## 效果图 + + ## 依赖版本 HarmonyOS 5.0.0 Release及以上 + 手机版本:5.0.0.102 @@ -29,7 +32,7 @@ ohpm install @hadss/swipeplayer ```json5 { "dependencies": { - "@hadss/swipeplayer": "^1.0.0-rc.2" + "@hadss/swipeplayer": "^1.0.0-rc.3" } } ``` @@ -69,6 +72,11 @@ struct Index { SwipePlayer({ datasource: this.dataSources, swipePlayerController: this.swipePlayerController, + options: { + viewBuilder: (type: string, isFullScreen?: boolean) => { + return viewScreen; + } + } }) } .width('100%') @@ -76,6 +84,11 @@ struct Index { } } +@Builder +export function viewScreen(dataObj: ESObject, playerSession: PlayerSession | undefined, + swipePlayerController: SwipePlayerController): void { +} + export interface MediaData { url: string; } @@ -157,6 +170,9 @@ build() { } this.isSelected = 1; } + }, + viewBuilder: (type: string, isFullScreen?: boolean) => { + return viewScreen; } } }) @@ -182,6 +198,11 @@ build() { ); } } + +@Builder +export function viewScreen(dataObj: ESObject, playerSession: PlayerSession | undefined, + swipePlayerController: SwipePlayerController): void { +} ``` ### 在滑动视频组件上添加自定义组件 @@ -249,6 +270,7 @@ export struct VerticalScreenComponent { } } ``` + ### 自定义滑动切换组件(广告,图片轮播等) 短视频切换场景下除了视频播放场景外还可能存在广告页,图片轮播等场景和其他一些不可预期的页面,SwipePlayer提供自定义滑动切换组件的能力, @@ -320,6 +342,7 @@ export function Advert(dataObj: ESObject, playerSession: PlayerSession | undefin Advert() } ``` + ### 长按视频3s弹出倍速播放配置,选择倍速后弹出toast弹框提示并倍速播放视频 短视频滑动还涉及一些手势操作的业务场景,比如长按3s弹出倍速页面,可以通过组件提供的Gesture手势事件注册能力实现, @@ -384,6 +407,7 @@ export function FastSpeedBuilder(swipeData: SwipeData, playerLayoutSize: PlayerL FastSpeed({ swipeData: swipeData, closeDialog: closeDialog }); } ``` + ### 点击评论按钮弹出评论页面,包含视频(缩放)上移动画,跟手动画 SwipePlayerController会封装点击页面弹框及视频动画并对外提供调用方法供应用使用,使用该方法时会弹出空白弹框,用户可以自定义弹框内容。 @@ -452,8 +476,8 @@ export struct Comments { .height('70%'); } } - ``` + ### 横向视频全屏播放 播放横向适配时,会额外显示全屏播放按钮,点击后全屏播放,并显示返回键,标题,进度条等内容,使用SwipePlayerController提供的全屏和退出全屏能力结合自定义组件videoBuilder实现。 @@ -490,6 +514,7 @@ export struct VerticalScreenComponent { } } ``` + ### 实现自定义进度条 某些情况下应用不想使用默认进度条组件,需要实现自定义的进度条,可以通过options配置禁用显示默认进度条,然后通过videoBuilder结合AVPlayer监听事件注册实现自定义进度条。 @@ -504,7 +529,7 @@ struct Index { swipePlayerController: this.swipePlayerController, options: { viewBuilder:(type: string, isFullScreen?: boolean) => { - if (type ==== 'video' && !isFullScreen) { + if (type === 'video' && !isFullScreen) { return ViewScreen; } } @@ -551,97 +576,10 @@ export function viewScreen(dataObj: ESObject, playerSession: PlayerSession | und }); } ``` + ## SwipePlayer接口和属性列表 -### SwipePlayer: 短视频流畅点播切换入口组件 -| 参数 | 说明 | -|------------------------------------|--------------------------------------------------| -| dataSource: SwipePlayerIDataSource | 用于LazyForEach遍历的SwipePlayer的播放源数据对象 | -| controller: SwipePlayerController | SwipePlayer的控制器,提供全屏/退出全屏,弹框/关闭弹框及AVPlayer相关控制能力 | -| options: SwipePlayerOption | SwipePlayer的参数配置,提供缓存数 | - -### SwipePlayerIDataSource: LazyForEach遍历的数据源对象 -| 参数 | 说明 | -|----------------------------------|---------------------| -| dataSources: Array\ | SwipePlayer的播放源数据列表 | - -| 接口原型 | 参数 | 返回值 | 接口描述 | -|------------|---------------------------------------|------------|------------------| -| totalCount | | number | SwipePlayer播放源总数 | -| getData | index: number | PlayerData | 获取数据源对象 | -| pushData | data: PlayerData; Array\ | void | 动态添加数据源 | -| reloadData | data: Array\ | void | 重新刷新数据源 | - -### PlayerData:视频播放类型或自定义类型数据源接口(需开发者实现接口) -| 参数 | 说明 | -|----------------------------------------|----------------------------------------------------------------------| -| getId:()=>string | 获取数据源Id | -| getType:()=>string | 获取短视频播放源类型 | -| getSource:()=>string;undefined | 获取短视频播放源路径,支持http/https | -| getCover:()=>string;Resource;undefined | 获取视频封面,支持gif(在AVPlayer的initialized,prepared,playing期间显示,不设置默认显示黑屏画面) | - -### 配置参数: SwipePlayerOptions -| 参数 | 说明 | -|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------| -| cachedCount | LazyForEach缓存数量,范围0-3,默认1 | -| videoPlayer: VideoPlayer | 视频配置项 | -| viewBuilder: (type: string, isFullScreen?: boolean) => (dataObj: ESObject, playerSession: PlayerSession \| undefined, swipePlayerController: SwipePlayerController) => void | 自定义组件Builder函数 | -| swiperCallBack?: SwiperCallback | SwipePlayer包装的Swiper组件的一些滑动回调注册 | - -### VideoPlayer: 视频配置项 -| 参数 | 说明 | -|-------------------------------|----------------| -| playIcon?: string \| Resource | 视频暂停状态下显示的播放按钮 | - -### SwiperCallback: Swiper回调注册 -| 参数 | 说明 | -|--------------------------------------------------------------------------------------------------|-------------------------------| -| onAnimationStart?: (index: number, targetIndex: number, extraInfo: SwiperAnimationEvent) => void | 对应Swiper组件的onAnimationStart回调 | -| onAnimationEnd?: (index: number, extraInfo: SwiperAnimationEvent) => void | 对应Swiper组件的onAnimationEnd回调 | -| onChange?: (index: number) => void | 对应Swiper组件的onChange回调 | - -### SwipePlayerController: SwipePlayer组件的控制器 -| 接口原型 | 参数 | 返回值 | 接口描述 | -|-------------------|---------------------------------------------------------------------------------------------------------------------------|-------------------|---------------------------------------------------------| -| getAVPlayer | | media.AVPlayer | 获取当前播放的AVPlayer对象,存在获取不到的情况 | -| async play | | void | 播放当前视频,有状态校验 | -| async pause | | void | 暂停播放当前视频,有状态校验 | -| seek | timeMs: number | void | 跳转到指定位置播放,有状态校验 | -| release | | void | 释放当前的AVPlayer对象,有状态校验 | -| setSpeed | speed: media.PlaybackSpeed | void | 设置视频的播放速度,有状态校验 | -| requestFullScreen | | void | 请求全屏播放,会隐藏videoBuilder组件 | -| exitFullScreen | | void | 退出全屏播放,会显示videoBuilder组件 | -| openDialog | builder: DialogBuilder, animationCallback: OpenAnimationCallback | void | 打开自定义弹框页面,支持传入自定义动画 | -| openDialog | builder: DialogBuilder, direction:PushDirection, duration:number, withVideoAnimator:boolean, closeMaskCallback?: ()=>void | void | 打开自定义弹窗,支持传入动画方向,动画时长,是否压缩视频,以及点击遮罩层关闭探查时回调 | -| closeDialog | closeAnimationCallback: CloseAnimationCallback | void | 关闭自定义页面弹框(可支持自定义动画) | -| backPressListener | | BackPressListener | 提供在onBackPress注册函数,侧滑返回时能关闭弹窗 | - -### DialogBuilder: 弹窗wrappedBuilder -| 参数 | 返回值 | 接口描述 | -|--------------------------------------------------------------------------------------------|------|-------------| -| dialogBuilder: () => WrappedBuilder<\[ESObject, PlayerLayoutSize, () => void, () => void]> | void | 弹窗Builder | -| dataObj: ESObject | | 弹窗Builder参数 | - -### PlayerLayoutSize: 视频布局属性 -| 接口原型 | 参数 | 返回值 | 接口描述 | -|------------------------|-------------------------------------|------------------|----------------| -| updatePlayerWidth | playerWidth: number \| string | void | 修改视频宽度 | -| getPlayerWidth | | number \| string | 获取视频宽度 | -| updatePlayerHeight | playerHeight: number \| string | void | 修改视频高度 | -| getPlayerHeight | | number \| string | 获取视频高度 | -| updatePlayerPositionX | playerPositionX: number \| string | void | 修改视频绝对定位X轴偏移量 | -| getPlayerPositionX | | number \| string | 获取视频绝对定位X轴偏移量 | -| updatePlayerPositionY | playerPositionY: number \| string | void | 修改视频绝对定位Y轴偏移量 | -| getPlayerPositionX | | number \| string | 获取视频绝对定位Y轴偏移量 | -| updateXComponentWidth | xComponentWidth: number \| string | void | 修改XComponent宽度 | -| getXComponentWidth | | number \| string | 获取XComponent宽度 | -| updateXComponentHeight | xComponentHeight: number \| string | void | 修改XComponent高度 | -| getXComponentHeight | | number \| string | 获取XComponent高度 | - -### AVPlayerListener: 储存AVPlayer对象及其对应的事件 -| 接口原型 | 参数 | 返回值 | 接口描述 | -|---------|----------------------------------------------------|------|------| -| onEvent | key: string, callback: (...args: ESObject) => void | void | 注册回调 | +[查看详情](../docs/Reference.md) ## 开源协议 -本项目基于 Apache License 2.0,请自由地享受和参与开源。 \ No newline at end of file +本项目基于 [Apache License 2.0](./LICENSE),请自由地享受和参与开源。 \ No newline at end of file diff --git a/docs/Reference.md b/docs/Reference.md new file mode 100644 index 0000000000000000000000000000000000000000..6755fc227f2de55da881368fff2e2d83a1d0dcf7 --- /dev/null +++ b/docs/Reference.md @@ -0,0 +1,92 @@ +# SwipePlayer接口和属性列表 +## SwipePlayer: 短视频流畅点播切换入口组件 +| 参数 | 说明 | +|------------------------------------|--------------------------------------------------| +| dataSource: SwipePlayerIDataSource | 用于LazyForEach遍历的SwipePlayer的播放源数据对象 | +| controller: SwipePlayerController | SwipePlayer的控制器,提供全屏/退出全屏,弹框/关闭弹框及AVPlayer相关控制能力 | +| options: SwipePlayerOption | SwipePlayer的参数配置,提供缓存数 | + +### SwipePlayerIDataSource: LazyForEach遍历的数据源对象 +| 参数 | 说明 | +|----------------------------------|---------------------| +| dataSources: Array\ | SwipePlayer的播放源数据列表 | + +| 接口原型 | 参数 | 返回值 | 接口描述 | +|------------|---------------------------------------|------------|------------------| +| totalCount | | number | SwipePlayer播放源总数 | +| getData | index: number | PlayerData | 获取数据源对象 | +| pushData | data: PlayerData; Array\ | void | 动态添加数据源 | +| reloadData | data: Array\ | void | 重新刷新数据源 | + +#### PlayerData:视频播放类型或自定义类型数据源接口(需开发者实现接口) +| 参数 | 说明 | +|----------------------------------------|----------------------------------------------------------------------| +| getId:()=>string | 获取数据源Id | +| getType:()=>string | 获取短视频播放源类型 | +| getSource:()=>string;undefined | 获取短视频播放源路径,支持http/https | +| getCover:()=>string;Resource;undefined | 获取视频封面,支持gif(在AVPlayer的initialized,prepared,playing期间显示,不设置默认显示黑屏画面) | + +## SwipePlayerOptions: 配置参数 +| 参数 | 说明 | +|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------| +| cachedCount: number | LazyForEach缓存数量,范围0-3,默认1 | +| autoPlay: boolean | 是否自动切换到下一个视频,默认false | +| videoPlayer: VideoPlayer | 视频配置项 | +| viewBuilder: (type: string, isFullScreen?: boolean) => (dataObj: ESObject, playerSession: PlayerSession \| undefined, swipePlayerController: SwipePlayerController) => void | 自定义组件Builder函数 | +| swiperCallBack?: SwiperCallback | SwipePlayer包装的Swiper组件的一些滑动回调注册 | + +### VideoPlayer: 视频配置项 +| 参数 | 说明 | +|-------------------------|----------------| +| playIcon?: ResourceStr | 播放按钮 | +| pauseIcon?: ResourceStr | 视频全屏状态下显示的暂停按钮 | + +### SwiperCallback: Swiper回调注册 +| 参数 | 说明 | +|--------------------------------------------------------------------------------------------------|-------------------------------| +| onAnimationStart?: (index: number, targetIndex: number, extraInfo: SwiperAnimationEvent) => void | 对应Swiper组件的onAnimationStart回调 | +| onAnimationEnd?: (index: number, extraInfo: SwiperAnimationEvent) => void | 对应Swiper组件的onAnimationEnd回调 | +| onChange?: (index: number) => void | 对应Swiper组件的onChange回调 | + +## SwipePlayerController: SwipePlayer组件的控制器 +| 接口原型 | 参数 | 返回值 | 接口描述 | +|-------------------|---------------------------------------------------------------------------------------------------------------------------|-------------------|---------------------------------------------------------| +| getAVPlayer | | media.AVPlayer | 获取当前播放的AVPlayer对象,存在获取不到的情况 | +| async play | | void | 播放当前视频,有状态校验 | +| async pause | | void | 暂停播放当前视频,有状态校验 | +| seek | timeMs: number | void | 跳转到指定位置播放,有状态校验 | +| release | | void | 释放当前的AVPlayer对象,有状态校验 | +| setSpeed | speed: media.PlaybackSpeed | void | 设置视频的播放速度,有状态校验 | +| requestFullScreen | | void | 请求全屏播放,会隐藏videoBuilder组件 | +| exitFullScreen | | void | 退出全屏播放,会显示videoBuilder组件 | +| openDialog | builder: DialogBuilder, animationCallback: OpenAnimationCallback | void | 打开自定义弹框页面,支持传入自定义动画 | +| openDialog | builder: DialogBuilder, direction:PushDirection, duration:number, withVideoAnimator:boolean, closeMaskCallback?: ()=>void | void | 打开自定义弹窗,支持传入动画方向,动画时长,是否压缩视频,以及点击遮罩层关闭探查时回调 | +| closeDialog | closeAnimationCallback: CloseAnimationCallback | void | 关闭自定义页面弹框(可支持自定义动画) | +| backPressListener | | BackPressListener | 提供在onBackPress注册函数,侧滑返回时能关闭弹窗 | + +### DialogBuilder: 弹窗wrappedBuilder +| 参数 | 返回值 | 接口描述 | +|--------------------------------------------------------------------------------------------|------|-------------| +| dialogBuilder: () => WrappedBuilder<\[ESObject, PlayerLayoutSize, () => void, () => void]> | void | 弹窗Builder | +| dataObj: ESObject | | 弹窗Builder参数 | + +#### PlayerLayoutSize: 视频布局属性 +| 接口原型 | 参数 | 返回值 | 接口描述 | +|------------------------|-------------------------------------|------------------|----------------| +| updatePlayerWidth | playerWidth: number \| string | void | 修改视频宽度 | +| getPlayerWidth | | number \| string | 获取视频宽度 | +| updatePlayerHeight | playerHeight: number \| string | void | 修改视频高度 | +| getPlayerHeight | | number \| string | 获取视频高度 | +| updatePlayerPositionX | playerPositionX: number \| string | void | 修改视频绝对定位X轴偏移量 | +| getPlayerPositionX | | number \| string | 获取视频绝对定位X轴偏移量 | +| updatePlayerPositionY | playerPositionY: number \| string | void | 修改视频绝对定位Y轴偏移量 | +| getPlayerPositionX | | number \| string | 获取视频绝对定位Y轴偏移量 | +| updateXComponentWidth | xComponentWidth: number \| string | void | 修改XComponent宽度 | +| getXComponentWidth | | number \| string | 获取XComponent宽度 | +| updateXComponentHeight | xComponentHeight: number \| string | void | 修改XComponent高度 | +| getXComponentHeight | | number \| string | 获取XComponent高度 | + +## AVPlayerListener: 储存AVPlayer对象及其对应的事件 +| 接口原型 | 参数 | 返回值 | 接口描述 | +|---------|----------------------------------------------------|------|------| +| onEvent | key: string, callback: (...args: ESObject) => void | void | 注册回调 | \ No newline at end of file diff --git a/docs/assets/advert.png b/docs/assets/advert.png new file mode 100644 index 0000000000000000000000000000000000000000..3ca93710c1e4d1316b6d4ae70e4080758063c0e3 Binary files /dev/null and b/docs/assets/advert.png differ diff --git a/docs/assets/comment.gif b/docs/assets/comment.gif new file mode 100644 index 0000000000000000000000000000000000000000..416d65551fd9ff62f873be31be395fe72e63d9a3 Binary files /dev/null and b/docs/assets/comment.gif differ diff --git a/docs/assets/custom.png b/docs/assets/custom.png new file mode 100644 index 0000000000000000000000000000000000000000..e5c2183dba706f7497419e6d5c35877073555fc2 Binary files /dev/null and b/docs/assets/custom.png differ diff --git a/docs/assets/display.gif b/docs/assets/display.gif new file mode 100644 index 0000000000000000000000000000000000000000..ccf6e94177fa7970adff03d13e991d5285c11e37 Binary files /dev/null and b/docs/assets/display.gif differ diff --git a/docs/assets/fast.gif b/docs/assets/fast.gif new file mode 100644 index 0000000000000000000000000000000000000000..ca4fa009eaf9a4b59bb2e41d8ef017fd4e8c4297 Binary files /dev/null and b/docs/assets/fast.gif differ diff --git a/docs/assets/full.gif b/docs/assets/full.gif new file mode 100644 index 0000000000000000000000000000000000000000..d44e5edfd9436e1c6f9f29df8ff6437208962efa Binary files /dev/null and b/docs/assets/full.gif differ diff --git a/docs/assets/slide.gif b/docs/assets/slide.gif new file mode 100644 index 0000000000000000000000000000000000000000..b9d60c5519e482962c24b80c8fb1a3e36c78925c Binary files /dev/null and b/docs/assets/slide.gif differ