互动模块
头文件
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, // 画面等比缩放到最小边填满 可能会裁剪掉部分画面
};