发起视频直播
关键步骤
1.
2.
3.
4.
基础属性
属性 | 属性描述 |
---|---|
delegate | 代理 |
displayView | 用来显示摄像头拍摄内容的 View |
isMute | 设置静音, 开始直播后设置有效 |
captureDevicePosition | 获取用户使用是前置还是后置摄像头 |
isPublishing | 获取当前推流状态 |
VHPublishConfig | 推流配置参数 |
关键方法
方法 | 方法描述 |
---|---|
initWithConfig | 初始化 |
startVideoCapture | 开始视频采集 |
stopVideoCapture | 停止视频采集 |
startLive | 开始发起直播 |
stopLive | 结束直播 |
disconnect | 断开推流的连接 |
reconnect | 重连流 |
swapCameras | 切换摄像头 |
setFoucsFoint | 手动对焦 |
captureDeviceZoom | 变焦 |
setDeviceTorchModel | 设置闪关灯的模式 |
setVolumeAmplificateSize | 设置音频增益大小 |
setContentMode | 修改本地相机预览填充模式 |
camVidMirror | 镜像摄像头 |
destoryObject | 销毁初始化数据 |
VHallLivePublishDelegate 代理方法
方法 | 方法描述 |
---|---|
publishStatus | 发起直播时的状态 |
firstCaptureImage | 采集到第一帧的回调 |
webinarInfo | 活动相关信息回调 |
初始化
- (instancetype)initWithConfig:(VHPublishConfig*)config;
参数名称 | 是否必须 | 示例 | 备注 |
---|---|---|---|
config | 是 | VHPublishConfig | 具体包含的参数参考地址 |
// 直播推流配置信息
VHPublishConfig* config = [VHPublishConfig configWithType:VHPublishConfigTypeDefault];
config.pushType = VHStreamTypeVideoAndAudio; // 默认视频直播
// 初始化
VHallLivePublish * livePublish = [[VHallLivePublish alloc] initWithConfig:config];
[livePublish startVideoCapture];
开始视频采集
显示视频预览
- (BOOL)startVideoCapture;
// 开始视频采集,并显示预览界面
[livePublish startVideoCapture];
停止视频采集
关闭视频预览
- (BOOL)stopVideoCapture;
// 停止视频采集,关闭视频预览
[livePublish stopVideoCapture];
开始发起直播
- (void)startLive:(NSDictionary*)param;
参数名称 | 是否必须 | 示例 | 备注 |
---|---|---|---|
param | 是 | 字典 | 活动基础信息,包含以下参数 |
param[@"id"] | 是 | 123456789 | 活动 Id,必传 |
param[@"nickname"] | 否 | VHPublishConfig | 发起直播更改主播昵称,非必传(v6.0 新增) |
NSMutableDictionary * param = [NSMutableDictionary dictionary];
param = [[NSMutableDictionary alloc]init];
param[@"id"] = @"123456789";
param[@"nickname"] = @"张三";
[livePublish startLive:param];
结束直播
接口 API 结束直播 与 startLive 成对出现,如果调用 startLive,则需要调用 stopLive 以释放相应资源
- (void)stopLive;
[livePublish stopLive];
断开推流的连接
断开推流的连接,注意 app 进入后台时要手动调用此方法 回到前台要 reconnect 重新直播
- (void)disconnect;
[livePublish disconnect];
重连流
恢复推流
- (void)reconnect;
[livePublish reconnect];
切换摄像头
- (BOOL)swapCameras:(AVCaptureDevicePosition)captureDevicePosition;
参数名称 | 是否必须 | 示例 | 备注 |
---|---|---|---|
captureDevicePosition | 是 | 前置:AVCaptureDevicePositionFront 后置:AVCaptureDevicePositionBack | 前置还是后置 |
[livePublish swapCameras:AVCaptureDevicePositionFront];
手动对焦
- (void)setFoucsFoint:(CGPoint)newPoint;
参数名称 | 是否必须 | 示例 | 备注 |
---|---|---|---|
newPoint | 是 | CGPointMake(2, 2) | 坐标 |
[livePublish setFoucsFoint:CGPointMake(2, 2)];
变焦
- (void)captureDeviceZoom:(CGFloat)zoomSize;
参数名称 | 是否必须 | 示例 | 备注 |
---|---|---|---|
zoomSize | 是 | 0.8 | 变焦的比例 |
[livePublish captureDeviceZoom:0.8];
设置闪关灯的模式
- (BOOL)setDeviceTorchModel:(AVCaptureTorchMode)captureTorchMode;
| :--------------: | :------: | :-------------------------------------------------------------------------------------------: | :--------: | --- |
| captureTorchMode | 是 | 打开:AVCaptureTorchModeOn
关闭:AVCaptureTorchModeOff
自动:AVCaptureTorchModeAuto | 闪光灯模式 | |
[livePublish setDeviceTorchModel:AVCaptureTorchModeOn];
设置音频增益大小
- (void)setVolumeAmplificateSize:(float)size;
参数名称 | 是否必须 | 示例 | 备注 |
---|---|---|---|
size | 是 | 1 | 音频增益的大小 [0.0,1.0] |
[livePublish setVolumeAmplificateSize:1];
修改本地相机预览填充模式
- (void)setContentMode:(VHRTMPMovieScalingMode)contentMode;
参数名称 | 是否必须 | 示例 | 备注 |
---|---|---|---|
contentMode | 是 | 正常:VHRTMPMovieScalingModeNone 等比缩放:VHRTMPMovieScalingModeAspectFit 填充 :VHRTMPMovieScalingModeAspectFill | 本地相机预览填充模式,开始直播后设置有效 |
[livePublish setContentMode:VHRTMPMovieScalingModeAspectFill];
镜像摄像头
- (void)camVidMirror:(BOOL)mirror;
参数名称 | 是否必须 | 示例 | 备注 |
---|---|---|---|
mirror | 是 | YES | YES:镜像 NO:不镜像 |
[self.livePublish camVidMirror:mirror];
销毁初始化数据
- (void)destoryObject;
[livePublish destoryObject];
发起直播时的状态
代理 APi
- (void)publishStatus:(VHLiveStatus)liveStatus
withInfo:(NSDictionary*)info;
参数名称 | 备注 |
---|---|
liveStatus | 直播状态 |
info | 详细信息,字典结构:{code:错误码,content:错误信息} |
直播状态详情
参数名称 | 备注 |
---|---|
VHLiveStatusNone | 默认 |
VHLiveStatusPushConnectSucceed | 直播连接成功 |
VHLiveStatusPushConnectError | 直播 连接失败 |
VHLiveStatusParamError | 参数错误 |
VHLiveStatusSendError | 直播发送数据错误 |
VHLiveStatusUploadSpeed | 直播上传速率 |
VHLiveStatusAudioRecoderError | 音频采集失败,提示用户查看权限或者重新推流,切记此事件会回调多次,直到音频采集正常为止 |
VHLiveStatusUploadNetworkException | 发起端网络环境差 |
VHLiveStatusUploadNetworkOK | 发起端网络环境恢复正常 |
VHLiveStatusGetUrlError | 获取推流地址失败 |
VHLiveStatusDirectorError | 云导播机位推流失败 |
采集到第一帧的回调
-(void)firstCaptureImage:(UIImage*)image;
状态名称 | 备注 |
---|---|
image | 第一帧的图片 |
活动相关信息回调
- (void)publish:(VHallLivePublish *)publishObject
webinarInfo:(VHWebinarInfo *)webinarInfo;
参数名称 | 备注 |
---|---|
publishObject | 推流对象 |
webinarInfo | 活动相关信息 (注意:此接口为 v6.0 新增,仅限新版控制台(v3 及以上)创建的活动使用,否则不会回调) |
修改于 2025-05-27 11:59:31