WhiteAudioMixerBridge.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. //
  2. // AudioMixerBridge.h
  3. // Whiteboard
  4. //
  5. // Created by yleaf on 2020/8/13.
  6. //
  7. #import <Foundation/Foundation.h>
  8. #import "WhiteBoardView.h"
  9. NS_ASSUME_NONNULL_BEGIN
  10. /**
  11. 用 RTC SDK 的混音方法播放动态 PPT 中的音频文件。
  12. 在使用如下方法前,需要先调用 [initWithBridge](initWithBridge:) 方法,详见 [WhiteAudioMixerBridge](WhiteAudioMixerBridge)。
  13. */
  14. @protocol WhiteAudioMixerBridgeDelegate <NSObject>
  15. /**
  16. 开始播放音乐文件及混音。
  17. 进行混音后,需要将混音结果通过 [setMediaState]([WhiteAudioMixerBridge setMediaState:errorCode:]) 传递给动态 PPT 内部。
  18. @param filePath 指定需要混音的本地或在线音频文件的绝对路径。
  19. @param loopback 是否只有本地用户可以听到混音后的音频流:
  20. - `YES`:只有本地可以听到混音的音频流。
  21. - `NO`:本地和对方都可以听到混音的音频流。
  22. @param replace 是否播放麦克风采集的音频:
  23. - `YES`: 只播放音频文件,不播放麦克风采集的音频。
  24. - `NO`: 将音频文件和麦克风采集的音频混音后播放。
  25. @param cycle 音乐文件的播放次数。
  26. - ≥ 0: 播放次数。例如,`0` 表示不播放;`1` 表示播放 `1` 次。
  27. - -1: 无限循环播放。
  28. */
  29. - (void)startAudioMixing:(NSString *)filePath loopback:(BOOL)loopback replace:(BOOL)replace cycle:(NSInteger)cycle;
  30. /**
  31. 停止播放音乐文件及混音。
  32. */
  33. - (void)stopAudioMixing;
  34. /**
  35. 设置音乐文件的播放位置。
  36. @param position 整数。进度条位置,单位为毫秒。
  37. */
  38. - (void)setAudioMixingPosition:(NSInteger)position;
  39. @end
  40. /**
  41. 用于桥接 Agora RTC SDK 的混音方法和白板 SDK。
  42. 当用户同时使用音视频功能和互动白板,且在互动白板中展示的动态 PPT 包含音频文件时,可能遇到以下问题:
  43. - 播放 PPT 内的音频时声音很小。
  44. - 播放 PPT 内的音频时有回声。
  45. 为解决上述问题,你可以使用该类以调用 RTC SDK 的混音方法播放动态 PPT 中的音频文件。
  46. **Note:** 该类基于 Agora RTC SDK 的混音方法设计,如果你使用的实时音视频 SDK 不是 Agora RTC SDK,但也具有混音接口和混音状态回调,你也可以调用该类。
  47. */
  48. @interface WhiteAudioMixerBridge : NSObject
  49. /**
  50. 初始化 `WhiteAudioMixerBridge` 对象。
  51. @param bridge 白板界面。详见 [WhiteBoardView](WhiteBoardView)。
  52. @param delegate 用 RTC SDK 的混音方法播放动态 PPT 中的音频文件。详见 [WhiteAudioMixerBridgeDelegate](WhiteAudioMixerBridgeDelegate)。
  53. @return 初始化的 `WhiteAudioMixerBridge` 对象。
  54. */
  55. - (instancetype)initWithBridge:(WhiteBoardView *)bridge deletegate:(id<WhiteAudioMixerBridgeDelegate>)delegate __deprecated_msg("use initWithBridge:delegate:");
  56. /**
  57. 初始化 `WhiteAudioMixerBridge` 对象。
  58. @param bridge 白板界面。详见 [WhiteBoardView](WhiteBoardView)。
  59. @param delegate 用 RTC SDK 的混音方法播放动态 PPT 中的音频文件。详见 [WhiteAudioMixerBridgeDelegate](WhiteAudioMixerBridgeDelegate)。
  60. @return 初始化的 `WhiteAudioMixerBridge` 对象。
  61. */
  62. - (instancetype)initWithBridge:(WhiteBoardView *)bridge delegate:(id<WhiteAudioMixerBridgeDelegate>)delegate;
  63. /**
  64. 设置音乐文件播放状态。
  65. 你需要在 Agora RTC SDK 触发的 `localAudioMixingStateDidChanged` 回调中调用该方法,将音乐文件播放状态传递给白板中的 PPT。
  66. PPT 根据收到的音频播放状态判断是否显示画面,以确保音画同步。
  67. **Note:** 如果你使用的实时音视频 SDK 没有混音状态回调方法,会导致播放的 PPT 音画不同步。
  68. @param stateCode 音乐文件播放状态:
  69. - 710: RTC SDK 成功调用 `startAudioMixing` 播放音乐文件或 `resumeAudioMixing` 恢复播放音乐文件。
  70. - 711: RTC SDK 成功调用 `pauseAudioMixing` 暂停播放音乐文件。
  71. - 713: RTC SDK 成功调用 `stopAudioMixing` 停止播放音乐文件。
  72. - 714: 音乐文件播放失败。SDK 会在 `errorCode` 参数中返回具体的报错原因。
  73. @param errorCode 音乐文件播放失败的原因:
  74. - 701:音乐文件打开出错。
  75. - 702:音乐文件打开太频繁。
  76. - 703:音乐文件播放异常中断。
  77. */
  78. - (void)setMediaState:(NSInteger)stateCode errorCode:(NSInteger)errorCode;
  79. @end
  80. NS_ASSUME_NONNULL_END