UnionStreamKit Class Reference
| Inherits from | NSObject |
|---|---|
| Declared in | UnionStreamKit.h |
– init
初始化方法
- (instancetype _Nullable)initDiscussion
默认不打断其他APP, 预设参数集为UnionPreset_540p_3
Declared In
UnionStreamKit.h
– initWithPreset:
初始化方法
- (instancetype _Nullable)initWithPreset:(UnionPreset)presetParameters
preset |
预定义参数 |
|---|
Return Value
创建的实例
Declared In
UnionStreamKit.h
– initInterrupt:andPreset:
初始化方法
- (instancetype _Nullable)initInterrupt:(BOOL)bInter andPreset:(UnionPreset)presetParameters
bInter |
是否打断其他APP |
|---|---|
preset |
预配置参数 |
Return Value
创建的实例
Declared In
UnionStreamKit.h
preset
采集和推流配置参数
@property (nonatomic, readonly) UnionPreset presetDiscussion
选择profile类型后, 采集和编码参数会自动配置进去, 默认为 UnionPreset_540p_3
Declared In
UnionStreamKit.h
audioEncCfg
音频编码配置信息, 根据preset会预先填充一部分
@property (nonatomic, readonly) UnionEncoderCfg *audioEncCfgDeclared In
UnionStreamKit.h
videoEncCfg
视频编码配置信息, 根据preset会预先填充一部分
@property (nonatomic, readonly) UnionEncoderCfg *videoEncCfgDeclared In
UnionStreamKit.h
vCapDev
视频采集设备
@property (nonatomic, readonly) UnionAVFCapture *vCapDevDiscussion
通过该指针可以对摄像头进行操作 (操作接口参见GPUImage)
Declared In
UnionStreamKit.h
filter
获取当前使用的滤镜
@property (nonatomic, readonly) GPUImageOutput<GPUImageInput> *filterDiscussion
通过此指针可以对滤镜参数进行设置 @waning 请确保外部保留了filter的真实类型的指针, 否则会出现奔溃
Declared In
UnionStreamKit.h
vPreviewMixer
图像混合器 for 预览
@property (nonatomic, readonly) UnionGPUPicMixer *vPreviewMixerDiscussion
将多图层的内容叠加
Declared In
UnionStreamKit.h
vStreamMixer
图像混合器 for 推流
@property (nonatomic, readonly) UnionGPUPicMixer *vStreamMixerDiscussion
将多图层的内容叠加
Declared In
UnionStreamKit.h
preview
预览视图
@property (nonatomic, readonly) UnionGPUView *previewDiscussion
通过此指针可以对预览视图进行操作
Declared In
UnionStreamKit.h
capToGpu
采集到的图像上传GPU
@property (nonatomic, readonly) UnionGPUPicInput *capToGpuDiscussion
用于衔接GPU和capture
Declared In
UnionStreamKit.h
gpuToStr
获取渲染的图像
@property (nonatomic, readonly) UnionGPUPicOutput *gpuToStrDiscussion
用于衔接GPU和streamer
Declared In
UnionStreamKit.h
aCapDev
音频采集设备 Audio Unit 音频采集
@property (nonatomic, readonly) UnionAUAudioCapture *aCapDevDeclared In
UnionStreamKit.h
aMixer
音频混合器
@property (nonatomic, readonly) UnionAudioMixer *aMixerDiscussion
用于将多路音频进行混合,将混合后的音频送入streamerBase
Declared In
UnionStreamKit.h
vEncoder
视频编码器, 构造kit之后, 可以自己根据类型创建编码器, 默认为 VideoToolBox 264
@property (nonatomic, readwrite) id<UnionEncoder> _Nonnull vEncoderDeclared In
UnionStreamKit.h
aEncoder
音频编码器, 构造kit之后, 可以自己根据类型创建编码器, 默认为 AudioToolBox AACLC
@property (nonatomic, readwrite) id<UnionEncoder> _Nonnull aEncoderDeclared In
UnionStreamKit.h
avAdaptor
音频编码器
@property (nonatomic, readonly) UnionAdaptor *avAdaptorDeclared In
UnionStreamKit.h
publisher
rtmp 推流器
@property (nonatomic, readonly) id<UnionPublisher> _Nonnull publisherDeclared In
UnionStreamKit.h
cameraLayer
摄像头图层
@property (nonatomic, readonly) NSInteger cameraLayerDeclared In
UnionStreamKit.h
logoPicLayer
logo 图片的图层
@property (nonatomic, readonly) NSInteger logoPicLayerDeclared In
UnionStreamKit.h
logoTxtLayer
logo 文字的图层
@property (nonatomic, readonly) NSInteger logoTxtLayerDeclared In
UnionStreamKit.h
captureState
当前采集设备状况
@property (nonatomic, readonly) UnionCaptureState captureStateDiscussion
可以通过该属性获取采集设备的工作状况
通知: * UnionCaptureStateDidChangeNotification 当采集设备工作状态发生变化时提供通知 * 收到通知后,通过本属性查询新的状态,并作出相应的动作
Declared In
UnionStreamKit.h
– getCaptureStateName:
获取采集状态对应的字符串
- (NSString *_Nonnull)getCaptureStateName:(UnionCaptureState)statDeclared In
UnionStreamKit.h
– getCurCaptureStateName
获取当前采集状态对应的字符串
- (NSString *_Nonnull)getCurCaptureStateNameDeclared In
UnionStreamKit.h
– startPreview:
启动预览
- (void)startPreview:(UIView *_Nonnull)viewParameters
view |
预览画面作为subview,插入到 view 的最底层 |
|---|
Discussion
设置完成采集参数之后,按照设置值启动预览,启动后对采集参数修改不会生效
需要访问摄像头和麦克风的权限,若授权失败,其他API都会拒绝服务
@warning: 开始推流前必须先启动预览
See Also
videoDimension, @property cameraPosition, @property videoOrientation, @property videoFPS
Declared In
UnionStreamKit.h
– startVideoCap
开启视频配置和采集
- (BOOL)startVideoCapDiscussion
设置完成视频采集参数之后,按照设置值启动视频预览,启动后对视频采集参数修改不会生效
需要访问摄像头的权限,若授权失败,其他API都会拒绝服务
视频采集成功返回YES,不成功返回NO
Declared In
UnionStreamKit.h
– startAudioCap
开始音频配置和采集
- (BOOL)startAudioCapDiscussion
设置完成音频采集参数之后,按照设置值启动音频预览,启动后对音频采集参数修改不会生效
需要访问麦克风的权限,若授权失败,其他API都会拒绝服务
音频采集成功返回YES,不成功返回NO
Declared In
UnionStreamKit.h
– stopPreview
停止预览,停止采集设备,并清理会话
- (void)stopPreviewDiscussion
若推流未结束,则先停止推流
See Also
Declared In
UnionStreamKit.h
– startStream:
开始推流
- (void)startStream:(NSURL *__nonnull)urlParameters
url |
推流地址 |
|---|
Declared In
UnionStreamKit.h
– appEnterBackground
进入后台: 暂停图像采集
- (void)appEnterBackgroundDiscussion
暂停图像采集和预览, 中断旁路录制
如果需要释放mic资源请直接调用停止采集
kit内部在收到UIApplicationDidEnterBackgroundNotification 或采集被打断等事件时,会主动调用本接口
Declared In
UnionStreamKit.h
– appBecomeActive
回到前台: 恢复采集
- (void)appBecomeActiveDiscussion
恢复图像采集和预览
恢复音频采集
kit内部在收到UIApplicationDidBecomeActiveNotification等事件时,会主动调用本接口
Declared In
UnionStreamKit.h
capPreset
采集分辨率 (仅在开始采集前设置有效)
@property (nonatomic, assign) NSString *capPresetDiscussion
参见iOS的 AVCaptureSessionPresetXXX的定义
https://developer.apple.com/reference/avfoundation/avcapturesession/1669314-video_input_presets?language=objc
透传到 UnionGPUCamera. 默认值为AVCaptureSessionPreset640x480
不同设备支持的预设分辨率可能不同, 请尽量与预览分辨率一致
Declared In
UnionStreamKit.h
– captureDimension
查询实际的采集分辨率
- (CGSize)captureDimensionDiscussion
参见iOS的 AVCaptureSessionPresetXXX的定义
Declared In
UnionStreamKit.h
previewDimension
预览分辨率 (仅在开始采集前设置有效)
@property (nonatomic, assign) CGSize previewDimensionDiscussion
内部始终将较大的值作为宽度 (若需要竖屏,请设置 videoOrientation)
宽高都会向上取整为4的整数倍
有效范围: 宽度[160, 1920] 高度[ 90, 1080], 超出范围会取边界有效值
当预览分辨率与采集分辨率不一致时: 若宽高比不同, 先进行裁剪, 再进行缩放 若宽高比相同, 直接进行缩放
默认值为(640, 360)
Declared In
UnionStreamKit.h
streamDimension
用户定义的视频 推流 分辨率
@property (nonatomic, assign) CGSize streamDimensionDiscussion
有效范围: 宽度[160, 1280] 高度[ 90, 720], 超出范围会取边界有效值
其他与previewDimension限定一致,
当与previewDimension不一致时, 同样先裁剪到相同宽高比, 再进行缩放
默认值为(640, 360)
See Also
Declared In
UnionStreamKit.h
capturePixelFormat
采集模块输出的像素格式 (默认:kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange)
@property (nonatomic, assign) OSType capturePixelFormatDiscussion
目前只支持 kCVPixelFormatType_32BGRA 和 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange
仅在开始推流前设置有效
Declared In
UnionStreamKit.h
gpuOutputPixelFormat
gpu output pixel format (默认:kCVPixelFormatType_32BGRA)
@property (nonatomic, assign) OSType gpuOutputPixelFormatDiscussion
目前支持 BGRA , NV12 和 I420
仅在开始推流前设置有效
Declared In
UnionStreamKit.h
videoFPS
采集及编码视频帧率 (开始采集前设置有效)
@property (nonatomic, assign) int videoFPSDiscussion
video frame per seconds 有效范围[1~30], 超出范围会取边界有效值
默认值为15
Declared In
UnionStreamKit.h
cameraPosition
摄像头位置 (仅在开始采集前设置有效)
@property (nonatomic, assign) AVCaptureDevicePosition cameraPositionDiscussion
前后摄像头, 默认值为前置
Declared In
UnionStreamKit.h
videoOrientation
摄像头朝向, 只在启动采集前设置有效
@property (nonatomic, readwrite) UIInterfaceOrientation videoOrientationDiscussion
参见UIInterfaceOrientation
竖屏时: width < height
横屏时: width > height
需要与UI方向一致
Declared In
UnionStreamKit.h
– switchCamera
切换摄像头
- (BOOL)switchCameraReturn Value
TRUE: 成功切换摄像头, FALSE:当前参数,下一个摄像头不支持,切换失败
Discussion
在前后摄像头间切换,从当前的摄像头切换到另一个,切换成功则修改cameraPosition的值
开始预览后开始有效,推流过程中也响应切换请求
See Also
Declared In
UnionStreamKit.h
– isTorchSupported
当前采集设备是否支持闪光灯
- (BOOL)isTorchSupportedReturn Value
YES / NO
Discussion
通常只有后置摄像头支持闪光灯
Declared In
UnionStreamKit.h
– setTorchMode:
设置闪光灯
- (void)setTorchMode:(AVCaptureTorchMode)modeParameters
mode |
AVCaptureTorchModeOn/Off |
|---|
Discussion
设置闪光灯的开关状态
开始预览后开始有效
Declared In
UnionStreamKit.h
– getCurrentCameraDevices
获取当前采集设备的指针
- (AVCaptureDevice *_Nonnull)getCurrentCameraDevicesReturn Value
AVCaptureDevice* 预览开始前调用返回为nil,开始预览后,返回当前正在使用的摄像头
Discussion
开放本指针的目的是开放类似下列添加到AVCaptureDevice的 categories: - AVCaptureDeviceFlash - AVCaptureDeviceTorch - AVCaptureDeviceFocus - AVCaptureDeviceExposure - AVCaptureDeviceWhiteBalance - etc.
Warning: 请勿修改摄像头的像素格式,帧率,分辨率等参数,修改后会导致推流工作异常或崩溃
Declared In
UnionStreamKit.h
videoProcessingCallback
视频处理回调接口
@property (nonatomic, copy) void ( ^ ) ( CMSampleBufferRef sampleBuffer ) videoProcessingCallbackParameters
sampleBuffer |
原始采集到的视频数据 |
|---|
Discussion
对sampleBuffer内的图像数据的修改将传递到观众端
请注意本函数的执行时间,如果太长可能导致不可预知的问题
请参考 CMSampleBufferRef
Declared In
UnionStreamKit.h
audioProcessingCallback
音频处理回调接口
@property (nonatomic, copy) void ( ^ ) ( CMSampleBufferRef sampleBuffer ) audioProcessingCallbackDiscussion
sampleBuffer 原始采集到的音频数据
对sampleBuffer内的pcm数据的修改将传递到观众端
请注意本函数的执行时间,如果太长可能导致不可预知的问题
当audioDataType 为UnionAudioData_CMSampleBuffer时才会被触发回调
请参考 CMSampleBufferRef
Declared In
UnionStreamKit.h
pcmProcessingCallback
音频处理回调接口
@property (nonatomic, copy) void ( ^ ) ( uint8_t **pData , int len , const AudioStreamBasicDescription *fmt , CMTime timeInfo ) pcmProcessingCallbackDiscussion
pData len为原始采集到的音频数据
当audioDataType 为UnionAudioData_RawPCM时才会被触发回调
请注意本函数的执行时间,如果太长可能导致不可预知的问题
Declared In
UnionStreamKit.h
interruptCallback
摄像头采集被打断的消息通知
@property (nonatomic, copy) void ( ^ ) ( BOOL bInterrupt ) interruptCallbackDiscussion
bInterrupt 为YES, 表明被打断, 摄像头采集暂停
bInterrupt 为NO, 表明恢复采集
Declared In
UnionStreamKit.h
previewMirrored
预览设置成镜像模式,默认为NO
@property (nonatomic, assign) BOOL previewMirroredDeclared In
UnionStreamKit.h
streamerMirrored
推流设置成镜像模式,默认为NO
@property (nonatomic, assign) BOOL streamerMirroredDeclared In
UnionStreamKit.h
streamerFreezed
推流的画面是否冻结 (默认为NO)
@property (nonatomic, assign) BOOL streamerFreezedDiscussion
通过本属性可以主动将推流的画面固定为当前帧
Declared In
UnionStreamKit.h
previewOrientation
预览图像朝向, 如果UI能够旋转,需要保持和UI的朝向一致
@property (nonatomic, assign) UIInterfaceOrientation previewOrientationDeclared In
UnionStreamKit.h
streamOrientation
推流图像朝向, 如果UI能够旋转, 可以跟随旋转,也可以不修改
@property (nonatomic, assign) UIInterfaceOrientation streamOrientationDeclared In
UnionStreamKit.h
– rotatePreviewTo:
根据UI的朝向旋转预览视图, 保证预览视图全屏铺满窗口
- (void)rotatePreviewTo:(UIInterfaceOrientation)orieParameters
orie |
旋转到目标朝向, 需要从demo中获取UI的朝向传入 |
|---|
Discussion
采集到的图像的朝向还是和启动时的朝向一致
此函数与 previewOrientation的set函数功能一样
Declared In
UnionStreamKit.h
– rotateStreamTo:
根据UI的朝向旋转推流画面, 这个是可以选的,可以不跟随旋转
- (void)rotateStreamTo:(UIInterfaceOrientation)orieParameters
orie |
旋转到目标朝向, 需要从demo中获取UI的朝向传入 |
|---|
Discussion
此函数与 streamOrientation 的set函数功能一样
Declared In
UnionStreamKit.h
logoPic
水印logo的图片
@property (nonatomic, readwrite) GPUImagePicture *logoPicDiscussion
设置为nil为清除水印图片
请注意背景图片的尺寸, 太大的图片会导致内存占用过高
Declared In
UnionStreamKit.h
– setLogoOrientaion:
设置水印图片的朝向
- (void)setLogoOrientaion:(UIImageOrientation)orienParameters
orien |
图片的朝向 |
|---|
Declared In
UnionStreamKit.h
textPic
文字内容的图片
@property (nonatomic, readwrite) GPUImagePicture *textPicDiscussion
设置为nil为清除内容图片
Declared In
UnionStreamKit.h
logoRect
水印logo的图片的位置和大小
@property (nonatomic, readwrite) CGRect logoRectDiscussion
位置和大小的单位为预览视图的百分比, 左上角为(0,0), 右下角为(1.0, 1.0)
如果宽为0, 则根据图像的宽高比, 和设置的高度比例, 计算得到宽度的比例
如果高为0, 方法同上
Declared In
UnionStreamKit.h
logoAlpha
水印logo的图片的位置
@property (nonatomic, readwrite) CGFloat logoAlphaDiscussion
alpha为透明度(0-1),0完全透明,1完全不透明
Declared In
UnionStreamKit.h
textLabel
水印文字的label
@property (nonatomic, readwrite) UILabel *textLabelDiscussion
借用UILabel来指定文字的颜色,字体, 透明度, 对齐方式等属性
请注意保证背景图片的尺寸, 太大的图片会导致内存占用过高
Warning: 如果使用非等宽字体, 可能导致闪烁(默认为Courier)
Warning: picMixer和UILabel都有alpha属性, 建议只选用其中一个, 固定另一个为1.0, 为了减少接口, 建议直接使用UILabel的属性, 如果两者同时使用, 最终图层的alpha为两者乘积
See Also
Declared In
UnionStreamKit.h
textRect
水印文字的图片的位置和大小
@property (nonatomic, readwrite) CGRect textRectDiscussion
位置和大小的单位为预览视图的百分比, 左上角为(0,0), 右下角为(1.0, 1.0)
如果宽为0, 则根据文字图像的宽高比, 和设置的高度比例, 计算得到宽度的比例
如果高为0, 方法同上
Declared In
UnionStreamKit.h
– updateTextLabel
刷新水印文字的内容
- (void)updateTextLabelDiscussion
先修改文字的内容或格式,调用该方法后生效
Declared In
UnionStreamKit.h
– focusAtPoint:
当前采集设备是否支持自动变焦
- (BOOL)focusAtPoint:(CGPoint)pointParameters
point |
相机对焦的位置 |
|---|
Return Value
YES / NO
Discussion
通常只有后置摄像头支持自动变焦
Declared In
UnionStreamKit.h
– exposureAtPoint:
当前采集设备是否支持自动曝光
- (BOOL)exposureAtPoint:(CGPoint)pointParameters
point |
相机曝光的位置 |
|---|
Return Value
YES / NO
Discussion
通常前后置摄像头都支持自动曝光
Declared In
UnionStreamKit.h
pinchZoomFactor
触摸缩放因子
@property (nonatomic, assign) CGFloat pinchZoomFactorDeclared In
UnionStreamKit.h