QNAudioMusicMixer.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. //
  2. // QNAudioMusicMixer.h
  3. // QNRTCKit
  4. //
  5. // Created by 冯文秀 on 2022/4/8.
  6. // Copyright © 2022 Pili Engineering, Qiniu Inc. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import "QNTypeDefines.h"
  10. #import "QNAudioFilterProtocol.h"
  11. NS_ASSUME_NONNULL_BEGIN
  12. @class QNAudioMusicMixer;
  13. @protocol QNAudioMusicMixerDelegate <NSObject>
  14. /*!
  15. * @abstract 背景音乐混音发生错误的回调
  16. *
  17. * @param audioMusicMixer 背景音乐混音实例
  18. *
  19. * @param error 错误
  20. *
  21. * @since v5.1.0
  22. */
  23. - (void)audioMusicMixer:(QNAudioMusicMixer *)audioMusicMixer didFailWithError:(NSError *)error;
  24. /*!
  25. * @abstract 背景音乐混音状态变化的回调
  26. *
  27. * @param audioMusicMixer 背景音乐混音实例
  28. *
  29. * @param musicMixerState 背景音乐混音回调代理
  30. *
  31. * @since v5.1.0
  32. */
  33. - (void)audioMusicMixer:(QNAudioMusicMixer *)audioMusicMixer didStateChanged:(QNAudioMusicMixerState)musicMixerState;
  34. /*!
  35. * @abstract 背景音乐混音当前进度的回调
  36. *
  37. * @param audioMusicMixer 背景音乐混音实例
  38. *
  39. * @param currentPosition 当前进度
  40. *
  41. * @discussion 需要注意的是这个回调在解码线程,请不要做过于耗时的操作,否则可能阻塞该线程影响音频输出或其他未知问题。
  42. *
  43. * @since v5.1.0
  44. */
  45. - (void)audioMusicMixer:(QNAudioMusicMixer *)audioMusicMixer didMixing:(int64_t)currentPosition;
  46. @end
  47. @interface QNAudioMusicMixer : NSObject <QNAudioFilterProtocol>
  48. /*!
  49. * @abstract 设置是否推送到远端
  50. *
  51. * @param publishEnabled 是否推送到远端
  52. *
  53. * @since v5.2.0
  54. */
  55. - (void)setPublishEnabled:(BOOL)publishEnabled;
  56. /*!
  57. * @abstract 获取背景音乐音乐是否推送到远端
  58. *
  59. * @return BOOL 是否推送到远端
  60. *
  61. * @since v5.2.0
  62. */
  63. - (BOOL)isPublishEnabled;
  64. /*!
  65. * @abstract 获取指定音频文件的总时长
  66. *
  67. * @warning 该接口为同步方法,对于在线音频文件,获取时长会存在一定的耗时,需注意调用接口所在的线程
  68. *
  69. * @param filePath 文件路径,支持本地路径以及在线文件,音频格式支持 aac、mp3、mp4、wav、m4r、caf、ogg、opus、m4a、flac
  70. *
  71. * @return int64_t 总时长,单位 ms
  72. *
  73. * @since v5.1.0
  74. */
  75. + (int64_t)getDuration:(NSString *)filePath;
  76. /*!
  77. * @abstract 设置参与混音的音量
  78. *
  79. * @param volume 音量,范围 0~1.0
  80. *
  81. * @since v5.1.0
  82. */
  83. - (void)setMixingVolume:(float)volume __deprecated_msg("Method deprecated in v5.2.0. Use `setMusicVolume:`");
  84. /*!
  85. * @abstract 获取参与混音的音量
  86. *
  87. * @return float 音量,范围 0~1.0
  88. *
  89. * @since v5.1.0
  90. */
  91. - (float)getMixingVolume __deprecated_msg("Method deprecated in v5.2.0. Use `getMusicVolume`");
  92. /*!
  93. * @abstract 设置背景音乐参与混音的音量
  94. *
  95. * @param volume 音量,范围 0~1.0
  96. *
  97. * @since v5.2.0
  98. */
  99. - (void)setMusicVolume:(float)volume;
  100. /*!
  101. * @abstract 获取背景音乐参与混音的音量
  102. *
  103. * @return float 音量,范围 0~1.0
  104. *
  105. * @since v5.2.0
  106. */
  107. - (float)getMusicVolume;
  108. /*!
  109. * @abstract 设置参与混音的起始位置
  110. *
  111. * @param position 位置,单位 ms
  112. *
  113. * @since v5.1.0
  114. */
  115. - (void)setStartPosition:(int64_t)position;
  116. /*!
  117. * @abstract 获取参与混音的起始位置
  118. *
  119. * @return int64_t 单位 ms
  120. *
  121. * @since v5.1.0
  122. */
  123. - (int64_t)getStartPosition;
  124. /*!
  125. * @abstract 获取当前时长
  126. *
  127. * @return int64_t 单位 ms
  128. *
  129. * @since v5.1.0
  130. */
  131. - (int64_t)getCurrentPosition;
  132. /*!
  133. * @abstract 开始混音,默认混一次
  134. *
  135. * @return BOOL 是否成功
  136. *
  137. * @since v5.1.0
  138. */
  139. - (BOOL)start;
  140. /*!
  141. * @abstract 开始混音,可设置循环次数
  142. *
  143. * @param loopCount 循环次数,-1 为无限循环,0 为不混音,大于 0 为实际循环次数
  144. *
  145. * @return BOOL 是否成功
  146. *
  147. * @since v5.1.0
  148. */
  149. - (BOOL)start:(int)loopCount;
  150. /*!
  151. * @abstract 停止混音
  152. *
  153. * @return BOOL 是否成功
  154. *
  155. * @since v5.1.0
  156. */
  157. - (BOOL)stop;
  158. /*!
  159. * @abstract 暂停混音
  160. *
  161. * @return BOOL 是否成功
  162. *
  163. * @since v5.1.0
  164. */
  165. - (BOOL)pause;
  166. /*!
  167. * @abstract 恢复混音
  168. *
  169. * @return BOOL 是否成功
  170. *
  171. * @since v5.1.0
  172. */
  173. - (BOOL)resume;
  174. /*!
  175. * @abstract 跳转到指定的位置混音
  176. *
  177. * @param position 跳转的位置,单位 ms
  178. *
  179. * @return BOOL 是否成功
  180. *
  181. * @since v5.1.0
  182. */
  183. - (BOOL)seekTo:(int64_t)position;
  184. @end
  185. NS_ASSUME_NONNULL_END