tencent cloud

腾讯云超级应用服务

动态与公告
【2025年1月2日】关于腾讯云小程序平台更名为腾讯云超级应用服务的公告
控制台更新动态
Android SDK 更新动态
iOS SDK 更新动态
Flutter 更新动态
IDE 更新动态
基础库更新动态
产品简介
产品概述
产品优势
应用场景
购买指南
计费概述
按量计费(后付费)
续费指引
停服说明
快速入门
套餐管理
概述
控制台账号管理
存储配置
加速配置
品牌化配置
平台功能
控制台登录
用户和权限体系
小程序管理
小游戏管理
应用管理
商业化
平台管理
用户管理
团队管理
运营管理
安全中心
代码接入指引
Demo 及 SDK 获取
Android
iOS
Flutter
App 服务端接入指南
GUID 生成规则
小程序开发指南
小程序介绍与开发环境
小程序代码组成
指南
框架
组件
API
服务端
JS SDK
基础库
IDE 使用指南
小游戏开发指南
指南
API
服务端
实践教程
小程序登录实践教程
小程序订阅消息实践教程
支付相关实践教程
广告接入实践教程
小游戏订阅消息实践教程
相关协议
数据处理和安全协议

自定义播放器

PDF
聚焦模式
字号
最后更新时间: 2025-06-03 18:00:36
superapp 若已集成了其它第三方播放器,或者自己实现了播放器,则可通过代理接口实现自定义播放器,即使用 superapp 已有播放器来替换小程序系统播放器。
实现自定义播放器的前置条件,则是需要实现小程序 SDK 的接口定制,即需要创建一个类并遵循 TMFMiniAppSDKDelegate 协议:
#import <TCMPPSDK/TCMPPSDK.h>

@interface MIniAppDemoSDKDelegateImpl : NSObject <TMFMiniAppSDKDelegate>

@end
需要实现对应的代理方法,在创建播放器实例时,返回实现协议的播放器实例:

- (id<TMAVideoPlayerDelegate>)app:(TMFMiniAppInfo *_Nonnull)app createVideoViewWithFrame:(CGRect)frame andVideoParams:(NSDictionary *)params;
TMAVideoPlayerDelegate 接口提供了播放器各种属性(例如播放地址、是否静音、是否显示进度条等)和事件(例如播放、暂停、播放倍速、进入全屏/半屏等),可在对应的方法中进行实现。完整的接口如下:

@property(nonatomic, strong) NSString *tmaVideoPlayerCurrentURL; //播放地址

/*
tmaVideoPlayerHostVC 用于记录 videoPlayer 所在的 VC,通常是 WebView,以在进入、退出全屏时进行相关操作,你只需要在你的customPlayer中加上 @synthesize tmaVideoPlayerHostVC;
不需要进行其他操作.
*/
@property(nonatomic, weak) UIViewController<TMAVideoViewFullScreenProtocol> *tmaVideoPlayerHostVC;

// 封面地址
@property(nonatomic, strong) NSString *tmaVideoPlayerPosterUrl;

// 指定视频初始播放位置
@property(nonatomic, assign) CGFloat tmaVideoPlayerInitialTime;

// 是否显示控制按钮
@property(nonatomic, assign) BOOL tmaVideoPlayerShowControls;

// 是否重复播放
@property(nonatomic, assign) BOOL tmaVideoPlayerRepeat;

// 是否静音
@property(nonatomic, assign) BOOL tmaVideoPlayerIsMuted;

// 是否显示中间播放按钮
@property(nonatomic, assign) BOOL tmaVideoPlayerShowCenterPlayButton;

// 控制 videoGravity、contentsGravity 和 poster 的 contentMode 有三种值:contain、fill、cover
@property(nonatomic, strong) NSString *tmaVideoPlayerObjectFitMode;

// 全屏方向 有三种值:0 UIInterfaceOrientationPortrait, 90 UIInterfaceOrientationLandscapeRight, -90 UIInterfaceOrientationLandscapeLeft
@property(nonatomic, strong) NSNumber *tmaVideoPlayerFullscreenDirection;

// 是否支持双击暂停/播放
@property(nonatomic, assign) BOOL tmaVideoPlayerEnablePlayGesture;

// 全屏时左上角的标题
@property(nonatomic, strong) NSString *tmaVideoPlayerFullscreenTitle;

// 是否显示进度条
@property(nonatomic, assign) BOOL tmaVideoPlayerShowProgress;

// 是否显示全屏按钮
@property(nonatomic, assign) BOOL tmaVideoPlayerShowFullscreenBtn;

// 是否显示底部控制栏的播放按钮
@property(nonatomic, assign) BOOL tmaVideoPlayerShowPlayBtn;

// 是否显示静音按钮
@property(nonatomic, assign) BOOL tmaVideoPlayerShowMuteButton;

// 是否支持进度调整手势
@property(nonatomic, assign) BOOL tmaVideoPlayerEnableProgressGesture;

// 非全屏是否开启音量、亮度调节手势
@property(nonatomic, assign) BOOL tmaVideoPlayerPageGestureWhenNotFullscreen;
@property(nonatomic, strong) NSArray *tmaVideoPlayerDanmuList;

// 是否自动播放
@property(nonatomic, assign) BOOL tmaVideoPlayerAutoPlay;

// 是否允许后台播放
@property(nonatomic, assign) BOOL tmaVideoPlayerBackgroundPlayback;

// 是否开启画中画
@property(nonatomic, assign) BOOL tmaVideoPlayerIsPictureInPicture;

// 记录是否是全屏状态
@property(nonatomic, assign) BOOL tmaVideoPlayerIsFullScreen;

// 是否自动转屏进入全屏
@property(nonatomic, assign) BOOL tmaVideoPlayerEnableAutoRotation;

/*
用于向小程序端发送播放器事件
*/
@property(nonatomic, strong) void(^ _Nullable tmaVideoPlayerStatusBlock)(MAVideoPlayerStatus status, NSDictionary * _Nullable params);

// 播放
- (void)tmaVideoPlayerPlay;

// 暂停
- (void)tmaVideoPlayerPause;

// 停止
- (void)tmaVideoPlayerStop;

// 调整播放进度
- (void)tmaVideoPlayerSeekDuration:(CGFloat)duration;

// 播放速率
- (void)tmaVideoPlayerPlayBackRate:(CGFloat)rate;

// 进入全屏
- (void)tmaVideoPlayerEnterFullScreen;

// 退出全屏
- (void)tmaVideoPlayerExitFullScreen;

// 全屏时是否显示系统状态栏
- (void)tmaVideoPlayerShowStatusBar:(BOOL)show;

// 插入弹幕
- (void)tmaVideoPlayerInsertDanmuText:(NSString *_Nonnull)content color:(NSString *_Nonnull)colorStr;

// 打断播放
- (void)tmaVideoPlayerInterruptPlay;

// 恢复播放
- (void)tmaVideoPlayerResumePlay;

// 页面消失时的暂停
- (void)tmaVideoPlayerPauseWhenDiappear;

// 页面恢复时的播放
- (void)tmaVideoPlayerPlayWhenAppear;

// 是否支持后台播放
- (void)tmaVideoPlayerRequestBackgroundPlayback:(BOOL)state;


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈