QNRTC.h 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348
  1. //
  2. // QNRTC.h
  3. // QNRTCKit
  4. //
  5. // Created by 何云旗 on 2021/6/18.
  6. // Copyright © 2021 Pili Engineering, Qiniu Inc. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import <UIKit/UIKit.h>
  10. #import "QNTypeDefines.h"
  11. #import "QNTrack.h"
  12. #import "QNRTCLogConfiguration.h"
  13. @class QNRTC;
  14. @class QNRTCConfiguration;
  15. @class QNClientConfig;
  16. @class QNRTCClient;
  17. @class QNMicrophoneAudioTrack;
  18. @class QNMicrophoneAudioTrackConfig;
  19. @class QNCameraVideoTrack;
  20. @class QNCameraVideoTrackConfig;
  21. @class QNCustomAudioTrack;
  22. @class QNCustomAudioTrackConfig;
  23. @class QNScreenVideoTrack;
  24. @class QNScreenVideoTrackConfig;
  25. @class QNCustomVideoTrack;
  26. @class QNCustomVideoTrackConfig;
  27. NS_ASSUME_NONNULL_BEGIN
  28. @protocol QNRTCDelegate <NSObject>
  29. @optional
  30. /*!
  31. * @abstract 音频输出设备变更的回调。主动调用的 `+ (void)setAudioRouteToSpeakerphone:(BOOL)audioRouteToSpeakerphone;` 不会有该回调。
  32. *
  33. * @since v5.0.0
  34. */
  35. - (void)RTCDidAudioRouteChanged:(QNAudioDeviceType)deviceType;
  36. @end
  37. @interface QNRTC : NSObject
  38. /*!
  39. * @abstract 用 configuration 初始化 QNRTC,务必使用。
  40. *
  41. * @param configuration QNRTC 的配置。
  42. *
  43. * @since v5.0.0
  44. */
  45. + (void)initRTC:(QNRTCConfiguration *)configuration;
  46. /*!
  47. * @abstract 取消初始化 QNRTC。
  48. *
  49. * @since v5.0.0
  50. */
  51. + (void)deinit;
  52. /*!
  53. * @abstract 创建 QNRTCClient。
  54. *
  55. * @since v4.0.0
  56. */
  57. + (QNRTCClient *)createRTCClient;
  58. /*!
  59. * @abstract 创建 QNRTCClient。
  60. *
  61. *@param clientConfig QNRTCClient 的配置。
  62. *
  63. * @since v4.0.0
  64. */
  65. + (QNRTCClient *)createRTCClient:(QNClientConfig *)clientConfig;
  66. /*!
  67. * @abstract 创建一路以麦克风采集为数据源的音频 track,默认码率为 64kbps
  68. *
  69. * @since v4.0.0
  70. */
  71. + (QNMicrophoneAudioTrack *)createMicrophoneAudioTrack;
  72. /*!
  73. * @abstract 创建一路以麦克风采集为数据源的音频 track
  74. *
  75. * @param configuration 用于初始化麦克风采集的音频 track 的配置。
  76. *
  77. * @since v4.0.0
  78. */
  79. + (QNMicrophoneAudioTrack *)createMicrophoneAudioTrackWithConfig:(QNMicrophoneAudioTrackConfig *)configuration;
  80. /*!
  81. * @abstract 创建一路以外部数据导入为数据源的音频 track,默认码率为 64kbps
  82. *
  83. * @since v4.0.0
  84. */
  85. + (QNCustomAudioTrack *)createCustomAudioTrack;
  86. /*!
  87. * @abstract 创建一路以外部数据导入为数据源的音频 track
  88. *
  89. * @param configuration 用于初始化外部数据导入的音频 track 的配置。
  90. *
  91. * @since v4.0.0
  92. */
  93. + (QNCustomAudioTrack *)createCustomAudioTrackWithConfig:(QNCustomAudioTrackConfig *)configuration;
  94. /*!
  95. * @abstract 创建一路以摄像头采集为数据源的视频 track,默认码率为 600 kbps
  96. *
  97. * @since v4.0.0
  98. */
  99. + (QNCameraVideoTrack *)createCameraVideoTrack;
  100. /*!
  101. * @abstract 创建一路以摄像头采集为数据源的视频 track
  102. *
  103. * @param configuration 用于初始化摄像头采集的视频 track 的配置。
  104. *
  105. * @since v4.0.0
  106. */
  107. + (QNCameraVideoTrack *)createCameraVideoTrackWithConfig:(QNCameraVideoTrackConfig *)configuration;
  108. /*!
  109. * @abstract 创建一路以屏幕共享采集为数据源的视频 track,默认码率为 600 kbps
  110. *
  111. * @since v4.0.0
  112. */
  113. + (QNScreenVideoTrack *)createScreenVideoTrack;
  114. /*!
  115. * @abstract 创建一路以屏幕共享采集为数据源的视频 track。
  116. *
  117. * @param configuration 用于初始化屏幕共享采集的视频 track 的配置。
  118. *
  119. * @since v4.0.0
  120. */
  121. + (QNScreenVideoTrack *)createScreenVideoTrackWithConfig:(QNScreenVideoTrackConfig *)configuration;
  122. /*!
  123. * @abstract 创建一路以外部视频数据导入为数据源的视频 track,默认码率为 600 kbps
  124. *
  125. * @since v4.0.0
  126. */
  127. + (QNCustomVideoTrack *)createCustomVideoTrack;
  128. /*!
  129. * @abstract 创建一路以外部视频数据导入为数据源的视频 track
  130. *
  131. * @param configuration 用于初始化外部视频数据导入的视频 track 的配置。
  132. *
  133. * @since v4.0.0
  134. */
  135. + (QNCustomVideoTrack *)createCustomVideoTrackWithConfig:(QNCustomVideoTrackConfig *)configuration;
  136. /*!
  137. * @abstract 创建背景音乐混音对象实例
  138. *
  139. * @param musicPath 背景音乐路径,支持本地路径及在线文件
  140. *
  141. * @param musicMixerDelegate 背景音乐混音回调代理
  142. *
  143. * @return QNAudioMusicMixer 对象实例
  144. *
  145. * @since v5.2.6
  146. */
  147. + (QNAudioMusicMixer *)createAudioMusicMixer:(NSString *)musicPath musicMixerDelegate:(id<QNAudioMusicMixerDelegate>)musicMixerDelegate;
  148. /*!
  149. * @abstract 销毁背景音乐混音对象实例
  150. *
  151. * @since v5.2.6
  152. */
  153. + (void)destroyAudioMusicMixer:(QNAudioMusicMixer*)mixer;
  154. /*!
  155. * @abstract 创建音效混音对象实例
  156. *
  157. * @param effectMixerDelegate 音效混音回调代理
  158. *
  159. * @since v5.2.6
  160. */
  161. + (QNAudioEffectMixer *)createAudioEffectMixer:(id<QNAudioEffectMixerDelegate>)effectMixerDelegate;
  162. /*!
  163. * @abstract 销毁音效混音对象实例
  164. *
  165. * @since v5.2.6
  166. */
  167. + (void)destroyAudioEffectMixer:(QNAudioEffectMixer*)mixer;
  168. /*!
  169. * @abstract 创建音源混音对象实例
  170. *
  171. * @param sourceMixerDelegate 音源混音回调代理
  172. *
  173. * @since v5.2.6
  174. */
  175. + (QNAudioSourceMixer *)createAudioSourceMixer:(id<QNAudioSourceMixerDelegate>)sourceMixerDelegate;
  176. /*!
  177. * @abstract 销毁音源混音对象实例
  178. *
  179. * @since v5.2.6
  180. */
  181. + (void)destroyAudioSourceMixer:(QNAudioSourceMixer*)mixer;
  182. @end
  183. #pragma mark - Category (Audio)
  184. /*!
  185. * @category QNRTC(Audio)
  186. *
  187. * @discussion 与音频设备相关的接口。
  188. *
  189. * @since v4.0.0
  190. */
  191. @interface QNRTC (Audio)
  192. /*!
  193. * @abstract 设置 QNRTCDelegate 代理回调。
  194. *
  195. * @since v5.0.0
  196. */
  197. + (void)setRTCDelegate:(id <QNRTCDelegate>)delegate;
  198. /*!
  199. * @abstract 是否将声音从扬声器输出。
  200. *
  201. * @discussion 传入 YES 时,强制声音从扬声器输出。
  202. *
  203. * @warning 由于系统原因,在某些设备(如 iPhone XS Max、iPhone 8 Plus)上,连接 AirPods 后无法通过
  204. * 该接口将声音强制设为扬声器输出。如有需求,可以通过使用 AVRoutePickerView 来切换。
  205. *
  206. * @since v4.0.0
  207. */
  208. + (void)setAudioRouteToSpeakerphone:(BOOL)audioRouteToSpeakerphone;
  209. /*!
  210. * @abstract 是否静音远端的声音,设置为 YES 后,本地不会输出远端用户的声音。
  211. *
  212. * @discussion 默认为 NO。该值跟房间状态无关,在离开房间后 SDK 并不会重置该值,即会保持您上次设置的值。
  213. *
  214. * @since v4.0.0
  215. */
  216. + (void)setSpeakerphoneMuted:(BOOL)mute;
  217. /*!
  218. * @abstract 获取静音远端的声音的状态。
  219. *
  220. * @since v4.0.0
  221. */
  222. + (BOOL)speakerphoneMuted;
  223. /*!
  224. * @abstract 动态切换音频场景。
  225. *
  226. * @since v5.2.3
  227. */
  228. + (void)setAudioScene:(QNAudioScene)audioScene;
  229. @end
  230. #pragma mark - Category (Logging)
  231. /*!
  232. * @category QNRTC(Logging)
  233. *
  234. * @discussion 与日志相关的接口。
  235. *
  236. * @since v4.0.0
  237. */
  238. @interface QNRTC (Logging)
  239. /*!
  240. * @abstract 开启文件日志
  241. *
  242. * @discussion 为了不错过日志,建议在 App 启动时开启,日志文件位于 App Container/Library/Caches/Pili/Logs 目录内
  243. * 注意:文件日志功能主要用于排查问题,打开文件日志功能会对性能有一定影响,上线前请记得关闭文件日志功能!
  244. *
  245. * @since v4.0.0
  246. */
  247. + (void)enableFileLogging __deprecated_msg("Method deprecated in v5.2.3. Use `setLogConfig:`");
  248. /*!
  249. * @abstract 设置日志等级
  250. *
  251. * @discussion 设置日志级别 默认:QNRTCLogLevelInfo
  252. *
  253. * @since v4.0.0
  254. */
  255. + (void)setLogLevel:(QNRTCLogLevel)level __deprecated_msg("Method deprecated in v5.2.3. Use `setLogConfig:`");
  256. /*!
  257. * @abstract 设置日志文件配置
  258. *
  259. * @discussion 设置日志文件配置,包括文件存储路径、日志等级、日志文件的大小等
  260. *
  261. * @since v5.2.3
  262. */
  263. + (void)setLogConfig:(QNRTCLogConfiguration *)configuration;
  264. /*!
  265. * @abstract 上传本地文件至七牛服务器
  266. *
  267. * @discussion 上传回调结果通过实现 QNUploadLogResultCallback 获取
  268. *
  269. * @since v5.2.3
  270. */
  271. + (void)uploadLog:(nullable QNUploadLogResultCallback)callback;
  272. /*!
  273. * @abstract 上传本地文件至指定的七牛云存储空间
  274. *
  275. * @discussion token 需要您的业务服务器自行签算
  276. *
  277. * @since v5.2.3
  278. */
  279. + (void)uploadLog:(NSString *)token callback:(nullable QNUploadLogResultCallback)callback;
  280. @end
  281. #pragma mark - Category (Info)
  282. /*!
  283. * @category QNRTC(Info)
  284. *
  285. * @discussion SDK 相关信息的接口。
  286. *
  287. * @since v4.0.0
  288. */
  289. @interface QNRTC (Info)
  290. /*!
  291. * @abstract 获取 SDK 的版本信息。
  292. *
  293. * @since v4.0.0
  294. */
  295. + (NSString *)versionInfo;
  296. @end
  297. NS_ASSUME_NONNULL_END