Blame view

HHVDoctorSDK/TXLiteAVSDK_TRTC.framework/Headers/TXLivePlayer.h 10 KB
liumingming authored
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200
/*
 *
 * Module:   TXLivePlayer @ TXLiteAVSDK
 *
 * Function: 腾讯云直播播放器
 *
 * Version: <:Version:>
 */

#import <Foundation/Foundation.h>
#import "TXLiveSDKTypeDef.h"
#import "TXLivePlayListener.h"
#import "TXLivePlayConfig.h"
#import "TXVideoCustomProcessDelegate.h"
#import "TXLiveRecordTypeDef.h"
#import "TXLiveRecordListener.h"
#import "TXAudioRawDataDelegate.h"

/// @defgroup TXLivePlayer_ios TXLivePlayer
/// 腾讯云直播播放器接口类
/// @{

/**
 * 支持的直播和点播类型
 *
 * @note 新版本的点播 SDK,推荐参考 TXVodPlayer.h
 */
typedef NS_ENUM(NSInteger, TX_Enum_PlayType) {
    /// RTMP 直播
    PLAY_TYPE_LIVE_RTMP = 0,
    /// FLV 直播
    PLAY_TYPE_LIVE_FLV = 1,
    /// FLV 点播
    PLAY_TYPE_VOD_FLV = 2,
    /// HLS 点播
    PLAY_TYPE_VOD_HLS = 3,
    /// MP4点播
    PLAY_TYPE_VOD_MP4 = 4,
    /// RTMP 直播加速播放
    PLAY_TYPE_LIVE_RTMP_ACC = 5,
    /// 本地视频文件
    PLAY_TYPE_LOCAL_VIDEO = 6,
};


/**
 * 视频播放器
 *
 * 主要负责将直播流的音视频画面进行解码和本地渲染,包含如下技术特点:
 * - 针对腾讯云的拉流地址,可使用低延时拉流,实现直播连麦等相关场景。
 * - 针对腾讯云的拉流地址,可使用直播时移功能,能够实现直播观看与时移观看的无缝切换。
 * - 支持自定义的音视频数据处理,让您可以根据项目需要处理直播流中的音视频数据后,进行渲染以及播放。
 */
@interface TXLivePlayer : NSObject

/////////////////////////////////////////////////////////////////////////////////
//
//                      (一)SDK 基础函数
//
/////////////////////////////////////////////////////////////////////////////////

/// @name SDK 基础函数
/// @{
/**
 * 1.1 设置播放回调,见 “TXLivePlayListener.h” 文件中的详细定义
 */
@property(nonatomic, weak) id <TXLivePlayListener> delegate;

/**
 * 1.2 设置视频处理回调,见 “TXVideoCustomProcessDelegate.h” 文件中的详细定义
 */
@property(nonatomic, weak) id <TXVideoCustomProcessDelegate> videoProcessDelegate;

/**
 * 1.3 设置音频处理回调,见 “TXAudioRawDataDelegate.h” 文件中的详细定义
 */
@property(nonatomic, weak) id <TXAudioRawDataDelegate> audioRawDataDelegate;

/**
 * 1.4 是否开启硬件加速,默认值:NO
 */
@property(nonatomic, assign) BOOL enableHWAcceleration;

/**
 * 1.5 设置 TXLivePlayConfig 播放配置项,见 “TXLivePlayConfig.h” 文件中的详细定义
 */
@property(nonatomic, copy) TXLivePlayConfig *config;

/**
 * 1.6 设置短视频录制回调,见 “TXLiveRecordListener.h” 文件中的详细定义
 */
@property (nonatomic, weak) id<TXLiveRecordListener> recordDelegate;

/**
 * 1.7 startPlay 后是否立即播放,默认 YES,只有点播有效
 */
@property (nonatomic) BOOL isAutoPlay;


/// @}

/////////////////////////////////////////////////////////////////////////////////
//
//                      (二)播放基础接口
//
/////////////////////////////////////////////////////////////////////////////////

/// @name 播放基础接口
/// @{
/**
 * 2.1 创建 Video 渲染 View,该控件承载着视频内容的展示。
 *
 * 变更历史:1.5.2版本将参数 frame 废弃,设置此参数无效,控件大小与参数 view 的大小保持一致,如需修改控件的大小及位置,请调整父 view 的大小及位置。 参考文档:[绑定渲染界面](https://www.qcloud.com/doc/api/258/4736#step-3.3A-.E7.BB.91.E5.AE.9A.E6.B8.B2.E6.9F.93.E7.95.8C.E9.9D.A2)
 *
 * @param frame Widget 在父 view 中的 frame
 * @param view  父 view
 * @param idx   Widget 在父 view 上 的层级位置
 */
- (void)setupVideoWidget:(CGRect)frame containView:(TXView *)view insertIndex:(unsigned int)idx;

/*
 * 修改 VideoWidget frame
 * 变更历史:1.5.2版本将此方法废弃,调用此方法无效,如需修改控件的大小及位置,请调整父 view 的大小及位置
 * 参考文档:https://www.qcloud.com/doc/api/258/4736#step-3.3A-.E7.BB.91.E5.AE.9A.E6.B8.B2.E6.9F.93.E7.95.8C.E9.9D.A2
 */
//- (void)resetVideoWidgetFrame:(CGRect)frame;

/**
 * 2.2 移除 Video 渲染 Widget
 */
- (void)removeVideoWidget;

/**
 * 2.3 启动从指定 URL 播放 RTMP 音视频流
 *
 * @param url 完整的 URL(如果播放的是本地视频文件,这里传本地视频文件的完整路径)
 * @param playType 播放类型
 * @return 0表示成功,其它为失败
 */
- (int)startPlay:(NSString *)url type:(TX_Enum_PlayType)playType;

/**
 * 2.4 停止播放音视频流
 *
 * @return 0:成功;其它:失败
 */
- (int)stopPlay;

/**
 * 2.5 是否正在播放
 *
 * @return YES 拉流中,NO 没有拉流
 */
- (BOOL)isPlaying;

/**
 * 2.6 暂停播放
 *
 * 适用于点播,直播(此接口会暂停数据拉流,不会销毁播放器,暂停后,播放器会显示最后一帧数据图像)
 */
- (void)pause;

/**
 * 2.6 继续播放,适用于点播,直播
 */
- (void)resume;

/// @}

/////////////////////////////////////////////////////////////////////////////////
//
//                      (三)视频相关接口
//
/////////////////////////////////////////////////////////////////////////////////

/// @name 视频相关接口
/// @{
/**
 * 3.1 设置画面的方向
 *
 * @param rotation 方向
 * @see TX_Enum_Type_HomeOrientation
 */
- (void)setRenderRotation:(TX_Enum_Type_HomeOrientation)rotation;

/**
 * 3.2 设置画面的裁剪模式
 *
 * @param renderMode 裁剪
 * @see TX_Enum_Type_RenderMode
 */
- (void)setRenderMode:(TX_Enum_Type_RenderMode)renderMode;

/**
 * 3.3 截屏
 *
 * @param snapshotCompletionBlock 通过回调返回当前图像
 */
- (void)snapshot:(void (^)(TXImage *))snapshotCompletionBlock;
wangguolei authored
201 202 203 204 205 206 207 208
/**
 * 3.4 获取当前渲染帧 pts
 *
 * @return 0:当前未处于正在播放状态(例如:未起播)
 *         >0:当前渲染视频帧的 pts,处于正在播放状态 (单位: 毫秒)
 */
- (uint64_t)getCurrentRenderPts;
liumingming authored
209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373
/// @}

/////////////////////////////////////////////////////////////////////////////////
//
//                      (四)音频相关接口
//
/////////////////////////////////////////////////////////////////////////////////

/// @name 音频相关接口
/// @{
/**
 * 4.1 设置静音
 */
- (void)setMute:(BOOL)bEnable;

/**
 * 4.2 设置音量
 *
 * @param volume 音量大小,取值范围0 - 100
 */
- (void)setVolume:(int)volume;

#if TARGET_OS_IPHONE
/**
 * 4.3 设置声音播放模式(切换扬声器,听筒)
 * @param audioRoute 声音播放模式
 */
+ (void)setAudioRoute:(TXAudioRouteType)audioRoute;
#endif

/**
 * 4.4 设置音量大小回调接口
 *
 * @param volumeEvaluationListener 音量大小回调接口,音量取值范围0 - 100
 */
- (void)setAudioVolumeEvaluationListener:(void(^)(int))volumeEvaluationListener;

/**
 * 4.5 启用音量大小提示
 *
 * 开启后会在 volumeEvaluationListener 中获取到 SDK 对音量大小值的评估。
 *
 * @param interval 决定了 volumeEvaluationListener 回调的触发间隔,单位为ms,最小间隔为100ms,如果小于等于0则会关闭回调,建议设置为300ms;
 */
- (void)enableAudioVolumeEvaluation:(NSUInteger)interval;

/// @}

/////////////////////////////////////////////////////////////////////////////////
//
//                      (五)直播时移相关接口
//
/////////////////////////////////////////////////////////////////////////////////

/// @name 直播时移相关接口
/// @{
/**
 * 5.1 直播时移准备,拉取该直播流的起始播放时间。
 *
 * 使用时移功能需在播放开始后调用此方法,否则时移失败。时移的使用请参考文档 [超级播放器](https://cloud.tencent.com/document/product/881/20208#.E6.97.B6.E7.A7.BB.E6.92.AD.E6.94.BE)
 *
 * @warning 非腾讯云直播地址不能时移
 *
 * @param domain 时移域名
 * @param bizId 流 bizId
 *
 * @return 0:OK;-1:无播放地址;-2:appId 未配置
 */
- (int)prepareLiveSeek:(NSString*)domain bizId:(NSInteger)bizId;

/**
 * 5.2 停止时移播放,返回直播
 *
 * @return 0:成功;其它:失败
 */
- (int)resumeLive;

#if TARGET_OS_IPHONE
/**
 * 5.3 播放跳转到音视频流某个时间
 * @param time 流时间,单位为秒
 * @return 0:成功;其它:失败
 */
- (int)seek:(float)time;
#endif

/// @}

/////////////////////////////////////////////////////////////////////////////////
//
//                      (六)视频录制相关接口
//
/////////////////////////////////////////////////////////////////////////////////

/// @name 视频录制相关接口
/// @{
#if TARGET_OS_IPHONE
/**
 * 6.1 开始录制短视频
 *
 * @param recordType 参见 TXRecordType 定义
 * @return 0:成功;1:正在录制短视频;-2:videoRecorder 初始化失败。
 */
- (int)startRecord:(TXRecordType)recordType;

/**
 * 6.2 结束录制短视频
 *
 * @return 0:成功;1:不存在录制任务;-2:videoRecorder 未初始化。
 */
- (int)stopRecord;

/**
 * 6.3 设置播放速率
 *
 * @param rate 正常速度为1.0;小于为慢速;大于为快速。最大建议不超过2.0
 */
- (void)setRate:(float)rate;
#endif

/// @}

/////////////////////////////////////////////////////////////////////////////////
//
//                      (七)更多实用接口
//
/////////////////////////////////////////////////////////////////////////////////

/// @name 更多实用接口
/// @{
/**
 * 7.1 设置状态浮层 view 在渲染 view 上的边距
 *
 * @param margin 边距
 */
- (void)setLogViewMargin:(TXEdgeInsets)margin;

/**
 * 7.2 是否显示播放状态统计及事件消息浮层 view
 *
 * @param isShow 是否显示
 */
- (void)showVideoDebugLog:(BOOL)isShow;

/**
 * 7.3 FLV 直播无缝切换
 *
 * @param playUrl 播放地址
 * @return 0:成功;其它:失败
 * @warning playUrl 必须是当前播放直播流的不同清晰度,切换到无关流地址可能会失败
 */
- (int)switchStream:(NSString *)playUrl;

/**
 * 7.4 调用实验性 API 接口
 *
 * @note 该接口用于调用一些实验性功能
 * @param jsonStr 接口及参数描述的 JSON 字符串
 */
- (void)callExperimentalAPI:(NSString*)jsonStr;

/// @}

@end
/// @}