互动模块

头文件

VHRenderView.h

类名

VHRenderView

属性

scalingMode

VHRenderView 填充模式VHRenderViewScalingMode

/*
 * 画面填充模式
 * 默认 VHRenderViewScalingModeAspectFit
 */
@property (nonatomic, assign) VHRenderViewScalingMode scalingMode;

streamId

/*
 * 流ID
 */
@property (nonatomic, copy, readonly) NSString      *streamId;

userId

/*
 * 用户id
 */
@property (nonatomic, copy, readonly) NSString      *userId;

userData

/*
 * 用户数据进入房间时传的数据
 */
@property (nonatomic, copy, readonly) NSString      *userData;

options

/*
 * 设置的音视频参数
 */
@property (nonatomic, copy, readonly) NSDictionary  *options;

isLocal

/*
 * 是否是本地相机view
 */
@property (nonatomic,assign,readonly) BOOL          isLocal;

voiceChangeType

/*
 * 变音 注意只在本地相机renderview , 只能在推流成功后调用有效
 * 0 不变音 1是变音
 */
@property (nonatomic,assign) int voiceChangeType;

isPublish

/*
 * 是否在推流
 */
@property (nonatomic,assign) BOOL isPublish;

isSubscribe

/*
 * 是否已订阅
 */
@property (nonatomic,assign) BOOL isSubscribe;

simulcastLayers

/*
 * 此流是否是支持大小流切换,支持几路切换
 * 1 一路流  2两路流
 */
@property (nonatomic, assign, readonly) int simulcastLayers;

remoteMuteStream

/*
 * 推流端流音视频开启情况
 * 数据结构 @{@"video":@(NO),@"audio":@(NO)} YES代表禁止,NO代表不禁止 可以用来更新ui状态
 */
@property (strong, nonatomic) NSDictionary * remoteMuteStream;//推流端

muteStream

/*
 * 订阅端 流音视频开启情况
 * 数据结构 @{@"video":@(NO),@"audio":@(NO)} YES代表禁止,NO代表不禁止 可以用来更新ui状态
 */
@property (nonatomic,strong, readonly) NSDictionary *muteStream;//订阅端 本地相机view 只有这一个属性

videoSize

/*
 * 此流视频宽高
 */
@property (nonatomic,assign, readonly) CGSize videoSize;

方法

- initCameraViewWithFrame:

/*
 * 创建本地摄像头view
 * 默认参数 使用服务器配置参数
 */
- (instancetype)initCameraViewWithFrame:(CGRect)frame;

- initCameraViewWithFrame: pushType: options:

VHPushType 清晰度VHPushType

/*
 * 创建本地摄像头view 使用自定义 视频参数
 * type       type 推流清晰度设置
 * @param options   type = VHPushTypeCUSTOM有效   @{VHFrameResolutionTypeKey:@(VHFrameResolution192x144),VHStreamOptionStreamType:@(VHInteractiveStreamTypeAudioAndVideo)}
 */
- (instancetype)initCameraViewWithFrame:(CGRect)frame pushType:(VHPushType)type options:(NSDictionary*)options;

- initCameraViewWithFrame: options:

注:移动端不建议设置 480x360以上分辨率

VHSimulcastLayersKey 设置双流推送,只有480x360以上分辨率有效

/*
 * 创建本地摄像头view 使用自定义 推流视频参数
 * @param options  如: @{VHFrameResolutionTypeKey:@(VHFrameResolution192x144),VHStreamOptionStreamType:@(VHInteractiveStreamTypeAudioAndVideo)}
 */
- (instancetype)initCameraViewWithFrame:(CGRect)frame options:(NSDictionary*)options;

- setDeviceOrientation:

设置预览画面方向 可以通过 监听 UIDeviceOrientationDidChangeNotification 通知设置预览画面方向

// 设置预览画面方向
- (BOOL)setDeviceOrientation:(UIDeviceOrientation)deviceOrientation;

- hasAudio

/*
 * 是否有音频
 */
- (BOOL) hasAudio;

- hasVideo

/*
 * 是否有视频
 */
- (BOOL) hasVideo;

- muteAudio

/*
 * 静音
 */
- (void) muteAudio;

- unmuteAudio

/*
 * 取消静音
 */
- (void) unmuteAudio;

- muteVideo

/*
 * 关闭视频
 */
- (void) muteVideo;

- unmuteVideo

/*
 * 取消关闭视频
 */
- (void) unmuteVideo;

- switchCamera

/*
 * 切换前后摄像头
 */
- (BOOL) switchCamera;

- startStatsWithCallback:

/*
 * 流状态监听
 * 注意:如果开启了流状态监听,必须调用stopStats 停止监听,否则无法释放造成内存泄漏
 */
- (BOOL) startStatsWithCallback:(StatsCallback _Nonnull )callback;

- stopStats

/*
 * 停止流状态监听
 */
- (void) stopStats;

结构体

VHPushType

/*
 * 摄像头及推流参数设置
 */
typedef NS_ENUM(NSInteger, VHPushType) {
    VHPushTypeNone, //未知,使用默认标清 
    VHPushTypeSD,   //标清 
    VHPushTypeHD,   //高清 
    VHPushTypeUHD,  //超清
    VHPushTypeCUSTOM//此版本暂不支持 等同于 VHPushTypeSD
};

VHRenderViewScalingMode

/*
 * 画面填充模式
 */
typedef NS_ENUM(int,VHRenderViewScalingMode){
    VHRenderViewScalingModeNone,       // 画面拉伸填充
    VHRenderViewScalingModeAspectFit,  // 画面等比缩放到最大边填满 可能会有留边
    VHRenderViewScalingModeAspectFill, // 画面等比缩放到最小边填满 可能会裁剪掉部分画面
};