TXLivePlayer.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. //
  2. // TXLivePlayer.h
  3. // LiteAV
  4. //
  5. // Created by alderzhang on 2017/5/24.
  6. // Copyright © 2017年 Tencent. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import "TXLiveSDKTypeDef.h"
  10. #import "TXLivePlayListener.h"
  11. #import "TXLivePlayConfig.h"
  12. #import "TXVideoCustomProcessDelegate.h"
  13. #import "TXLiveRecordTypeDef.h"
  14. #import "TXLiveRecordListener.h"
  15. #import "TXAudioRawDataDelegate.h"
  16. typedef NS_ENUM(NSInteger, TX_Enum_PlayType) {
  17. /// RTMP直播
  18. PLAY_TYPE_LIVE_RTMP = 0,
  19. /// FLV直播
  20. PLAY_TYPE_LIVE_FLV = 1,
  21. #if TARGET_OS_IPHONE
  22. /// FLV点播
  23. PLAY_TYPE_VOD_FLV = 2,
  24. /// HLS点播
  25. PLAY_TYPE_VOD_HLS = 3,
  26. /// MP4点播
  27. PLAY_TYPE_VOD_MP4 = 4,
  28. #endif
  29. /// RTMP直播加速播放
  30. PLAY_TYPE_LIVE_RTMP_ACC = 5,
  31. #if TARGET_OS_IPHONE
  32. /// 本地视频文件
  33. PLAY_TYPE_LOCAL_VIDEO = 6,
  34. #endif
  35. };
  36. /// 直播播放器
  37. @interface TXLivePlayer : NSObject
  38. /// 播放器回调
  39. @property(nonatomic, weak) id <TXLivePlayListener> delegate;
  40. /// 视频处理回调
  41. @property(nonatomic, weak) id <TXVideoCustomProcessDelegate> videoProcessDelegate;
  42. /// 音频处理回调
  43. @property(nonatomic, weak) id <TXAudioRawDataDelegate> audioRawDataDelegate;
  44. /// 是否硬件加速
  45. @property(nonatomic, assign) BOOL enableHWAcceleration;
  46. /// 直播配置参数
  47. @property(nonatomic, copy) TXLivePlayConfig *config;
  48. #if TARGET_OS_IPHONE
  49. /// 短视频录制回调
  50. @property (nonatomic, weak) id<TXLiveRecordListener> recordDelegate;
  51. /// startPlay后是否立即播放,默认YES。点播有效
  52. @property BOOL isAutoPlay;
  53. #endif
  54. /**
  55. * 创建Video渲染Widget,该控件承载着视频内容的展示。
  56. * @param frame Widget在父view中的rc
  57. * @param view 父view
  58. * @param idx Widget在父view上的层级位置
  59. * @discussion 变更历史: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
  60. */
  61. - (void)setupVideoWidget:(CGRect)frame containView:(TXView *)view insertIndex:(unsigned int)idx;
  62. /* 修改VideoWidget frame
  63. * 变更历史:1.5.2版本将此方法废弃,调用此方法无效,如需修改控件的大小及位置,请调整父view的大小及位置
  64. * 参考文档: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
  65. */
  66. //- (void)resetVideoWidgetFrame:(CGRect)frame;
  67. /**
  68. * 移除Video渲染Widget
  69. */
  70. - (void)removeVideoWidget;
  71. /**
  72. * 启动从指定URL播放RTMP音视频流
  73. * @param url 完整的URL(如果播放的是本地视频文件,这里传本地视频文件的完整路径)
  74. * @param playType 播放类型
  75. * @return 0 = OK
  76. */
  77. - (int)startPlay:(NSString *)url type:(TX_Enum_PlayType)playType;
  78. /**
  79. * 停止播放音视频流
  80. * @return 0 = OK
  81. */
  82. - (int)stopPlay;
  83. /**
  84. * 是否正在播放
  85. * @return YES 拉流中,NO 没有拉流
  86. */
  87. - (bool)isPlaying;
  88. /**
  89. * 暂停播放
  90. * @discussion 适用于点播,直播(此接口会暂停数据拉流,不会销毁播放器,暂停后,播放器会显示最后一帧数据图像)
  91. */
  92. - (void)pause;
  93. /**
  94. * 继续播放,适用于点播,直播
  95. */
  96. - (void)resume;
  97. /**
  98. * 直播时移准备,拉取该直播流的起始播放时间。
  99. @ @param domain 时移域名
  100. * @param bizId 流bizId
  101. * @return 0 = OK,-1 = 无播放地址,-2 = appId未配置
  102. * @discussion 使用时移功能需在播放开始后调用此方法,否者时移失败。时移的使用请参考文档 https://cloud.tencent.com/document/product/266/9237
  103. * @warning 非腾讯云直播地址不能时移
  104. */
  105. - (int)prepareLiveSeek:(NSString*)domain bizId:(NSInteger)bizId;
  106. /**
  107. * 停止时移播放,返回直播
  108. * @return 0 = OK
  109. */
  110. - (int)resumeLive;
  111. #if TARGET_OS_IPHONE
  112. /**
  113. * 播放跳转到音视频流某个时间
  114. * @param time 流时间,单位为秒
  115. * @return 0 = OK
  116. */
  117. - (int)seek:(float)time;
  118. #endif
  119. /**
  120. * 设置画面的方向
  121. * @param rotation 方向
  122. * @see TX_Enum_Type_HomeOrientation
  123. */
  124. - (void)setRenderRotation:(TX_Enum_Type_HomeOrientation)rotation;
  125. /**
  126. * 设置画面的裁剪模式
  127. * @param renderMode 裁剪
  128. * @see TX_Enum_Type_RenderMode
  129. */
  130. - (void)setRenderMode:(TX_Enum_Type_RenderMode)renderMode;
  131. /**
  132. * 设置静音
  133. */
  134. - (void)setMute:(BOOL)bEnable;
  135. #if TARGET_OS_IPHONE
  136. /*视频录制*/
  137. /**
  138. * 开始录制短视频
  139. * @param recordType 参见TXRecordType定义
  140. * @return 0 成功;-1 正在录制短视频;-2 videoRecorder初始化失败;
  141. */
  142. -(int) startRecord:(TXRecordType)recordType;
  143. /*
  144. * 结束录制短视频
  145. * @return 0 成功;-1 不存在录制任务; -2 videoRecorder未初始化;
  146. */
  147. -(int) stopRecord;
  148. /*
  149. * 截屏
  150. * @param snapshotCompletionBlock 通过回调返回当前图像
  151. */
  152. - (void)snapshot:(void (^)(TXImage *))snapshotCompletionBlock;
  153. /**
  154. * 设置播放速率
  155. * @param rate 正常速度为1.0;小于为慢速;大于为快速。最大建议不超过2.0
  156. */
  157. - (void)setRate:(float)rate;
  158. #endif
  159. /**
  160. * 设置状态浮层view在渲染view上的边距
  161. * @param margin 边距
  162. */
  163. - (void)setLogViewMargin:(TXEdgeInsets)margin;
  164. /**
  165. * 是否显示播放状态统计及事件消息浮层view
  166. * @param isShow 是否显示
  167. */
  168. - (void)showVideoDebugLog:(BOOL)isShow;
  169. #if TARGET_OS_IPHONE
  170. /**
  171. * 设置声音播放模式(切换扬声器,听筒)
  172. * @param audioRoute 声音播放模式
  173. */
  174. + (void)setAudioRoute:(TXAudioRouteType)audioRoute;
  175. #endif
  176. /**
  177. * flv直播无缝切换
  178. *
  179. * 参 数:
  180. * playUrl 播放地址
  181. * @return 0 = OK
  182. * @warning playUrl必须是当前播放直播流的不同清晰度,切换到无关流地址可能会失败
  183. */
  184. - (int)switchStream:(NSString *)playUrl;
  185. @end