推流模块

头文件

VHLivePublisher.h

类名

VHLivePublisher

属性

delegate

推流代理VHLivePublisherDelegate

@property (nonatomic,weak)id <VHLivePublisherDelegate> delegate;

preView

预览界面

/**
 *  显示摄像头拍摄内容的View
 */
@property (nonatomic,strong,readonly)UIView * preView;

captureDevicePosition

当前使用摄像头位置

/**
 *  判断用户使用是前置还是后置摄像头
 */
@property (nonatomic,assign,readonly)AVCaptureDevicePosition captureDevicePosition;

config

推流配置 VHPublishConfig

/**
 *  获取推流参数
 */
@property (nonatomic,strong,readonly)VHPublishConfig* config;

enableMute

静音

/**
 *  静音
 */
@property (nonatomic,assign)BOOL enableMute;

videoBitRate

视频码率

/**
 *  推流前可设置视频码率
 */
@property (nonatomic,assign)int videoBitRate;

isPublishing

推流状态

/**
 *  推流状态
 */
@property (nonatomic,assign,readonly)BOOL isPublishing;

方法

- initWithConfig:

/**
 *  初始化
 *  @param config  config参数
 */
- (instancetype)initWithConfig:(VHPublishConfig*)config;

- initWithConfig:videoCapture:audioCapture:

VHPublishConfig IVHVideoCapture IVHAudioCapture

/**
 *  初始化
 *  高级功能 自定义采集器
 *  @param config  config参数
 *  @param videoCapture  自定义视频采集器
 *  @param audioCapture  自定义音频采集器
 */
- (instancetype)initWithConfig:(VHPublishConfig*)config
                  videoCapture:(id<IVHVideoCapture>)videoCapture
                  audioCapture:(id<IVHAudioCapture>)audioCapture;

- destoryObject

/**
 *  销毁初始化数据,同步销毁,如果感觉销毁太慢,可以开线程去销毁
 */
- (void)destoryObject;

- startCapture

/**
 *  开始采集数据 并预览
 */
- (BOOL)startCapture;

- startPublish:accessToken:

/**
 *  开始推流
 *  @param roomID       房间ID
 *  @param accessToken  accessToken
 */
- (BOOL)startPublish:(NSString*)roomID accessToken:(NSString*)accessToken;

- pause

/**
 *  暂停推流 如电话接入、进入后台等
 */
- (BOOL)pause;

- resume

/**
 *  恢复推流
 */
- (BOOL)resume;

- stopPublish

/**
 *  停止推流
 */
- (BOOL)stopPublish;

- stopCapture

/**
 *  停止采集数据
 */
- (BOOL)stopCapture;

- switchCamera:

/**
 *  切换前后摄像头
 *  @param captureDevicePosition  后置:AVCaptureDevicePositionBack 前置:AVCaptureDevicePositionFront
 *  @return 是否切换成功
 */
- (BOOL)switchCamera:(AVCaptureDevicePosition)captureDevicePosition;

- zoomCamera:

/**
 *  缩放摄像头
 *  @param zoomSize  变焦取值范围[1.0 - xx] xx 是系统相机支持最大变焦值
 */
- (BOOL)zoomCamera:(CGFloat)zoomSize;

- focusCameraAtAdjustedPoint:

/**
 *  手动对焦
 *  @param point 对焦点 [x,y] [0.0 - 1.0]
 */
- (BOOL)focusCameraAtAdjustedPoint:(CGPoint)point;

- torchMode:

/**
 *  闪光灯开关 前置摄像头时无效
 *  @param captureTorchMode 闪光灯模式
 */
- (BOOL)torchMode:(AVCaptureTorchMode)captureTorchMode;

代理方法

VHLivePublisherDelegate

- firstCaptureImage:
/**
 *  采集到第一帧的回调
 *  @param image 第一帧的图片
 */
-(void)firstCaptureImage:(UIImage*)image;
- onPublishStatus:info:
/**
 *  推流状态回调
 *  @param status   状态类型
 *  @param info     状态信息
 */
- (void)onPublishStatus:(VHPublishStatus)status info:(NSDictionary*)info;
- onPublishError:info:
/**
 *  错误回调
 *  @param error    错误类型
 *  @param info     错误信息@{code:@"" ,content: @""}
 */
- (void)onPublishError:(VHPublishError)error info:(NSDictionary*)info;

结构体

VHPublishStatus

/**
 *  推流状态
 */
typedef NS_ENUM(NSInteger, VHPublishStatus) {
    VHPublishStatusNone,                    //默认状态
    VHPublishStatusPushConnectSucceed,      //直播连接成功
    VHPublishStatusUploadSpeed,             //直播上传速率
    VHPublishStatusUploadNetworkException,  //发起端网络环境差
    VHPublishStatusUploadNetworkOK          //发起端网络环境恢复正常
};

VHPublishError

/**
 *  错误状态
 */
typedef NS_ENUM(NSInteger, VHPublishError) {
    VHPublishErrorNone,              //  默认状态
    VHPublishErrorPusherError,       //  推流相关错误@{code:"10001" ,content: "xxxxx"}
    VHPublishErrorAuthError,         //  接口\验证等相关错误
    VHPublishErrorParamError,        //  参数相关错误
    VHPublishErrorCaptureError,      //  采集相关错误
};