Skip to content

5_Improve

Sidney edited this page Dec 28, 2017 · 3 revisions

5 功能使用

CameraServer 是整个 SDK 的核心类,是所有调用接口的承载者,以下介绍的所有功能都在其中进行。

5.1 状态获取

//推流状态回调
typedef void(^CameraMessage)(UCloudCameraCode code, NSInteger arg1, NSInteger arg2, id data);

//相机回调
typedef void(^CameraDevice)(AVCaptureDevice *dev);

//图像原始数据回调
typedef CMSampleBufferRef (^CameraData)(CMSampleBufferRef buffer);
  • 推流状态返回
状态枚举 描述
UCloudCamera_STARTED = 7 推流进行中
UCloudCamera_OUTPUT_ERROR = 10 推流错误
UCloudCamera_BUFFER_OVERFLOW = 14 推流上行带宽不足
UCloudCamera_SecretkeyNil = 15 SDK 密钥(accessKey)为空
UCloudCamera_DomainNil = 16 推流域名为空
UCloudCamera_AuthFail = 17 SDK 鉴权失败
UCloudCamera_PreviewOK = 19 预览视图准备好
UCloudCamera_PublishOk = 20 底层推流配置完毕
UCloudCamera_CannotConnect = 24 推流url对应的服务器连接失败
UCloudCamera_DisConnected = 25 服务器连接异常断开
UCloudCamera_Permission = 998 摄像头权限
UCloudCamera_Micphone = 999 麦克风权限
  • 手电筒状态返回
状态枚举 描述
UCloudCameraCode_Off 关闭
UCloudCameraCode_On 打开
UCloudCameraCode_Auto 自动
  • 推流码率设置爱
状态枚举 描述
UCloudVideoBitrateLow 400
UCloudVideoBitrateNormal 600
UCloudVideoBitrateMedium 800
UCloudVideoBitrateHigh 1000

5.2 参数设置

当你要深入理解 SDK 的一些参数及有定制化需求时,可以从高级功能部分中查询阅读。

width、height 默认为竖屏方式设置,宽高为640*360,视频宽高比按照16:9进行设置,iPhone4、4s因设置采集宽高比是4:3,如需兼容低设备请酌情设置

fps 帧率,即每一秒所包含的视频帧数,默认15,有效范围[1~30], 超出会提示参数错误;

bitrate 音频和视频总比特率,默认UCloudVideoBitrateMedium = 800,音频码率为128kps,可自行设置,该属性的单位为kbps(kilo bits per second),视频码率高则画面较清晰,低则画面较模糊,同时数据亦是如此,码率高数据大,码率低数据小;

captureDevicePos 摄像头位置,默认打开前置摄像头;

muted 是否开启静音,默认NO

backgroudMusicOn 是否开启背景音乐,默认NO

videoOrientation 视频推流方向,只在采集初始化时设置有效,默认UIDeviceOrientationPortrait;

streamMirrorFrontFacing 推流镜像,只对前置有效

reconnectInterval 重推流间隔,默认5秒

reconnectCount重推流次数,默认3次,如果需要不做重推操作,可将此参数设置为0;重推流间隔和次数可根据app场景自行进行设置调整;

5.3 视频滤镜渲染

我们提供了两种不同美颜滤镜算法(UCloudGPUImageBeautyFilter和UCloudGPUImageBeautyFilter2)及各种基于GPUImageView的滤镜,用户可以根据自行情况进行选择使用,或者自行编写基于GPUImage的算法;

5.4 添加水印

	__block UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, size.width, 44)];
	label.textAlignment = NSTextAlignmentCenter;
	label.text = @"我是水印";
	UIImageView *imgV = [[UIImageView alloc]initWithFrame:CGRectMake(size.width/2 -20, _changeBtn.frame.origin.y + 40, 60, 60)];
	imgV.image = [UIImage imageNamed:@"ucloud_logo"];
	imgV.alpha = 0.5;
	UIView *subView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, size.width, size.height)];
	subView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
	subView.backgroundColor = [UIColor clearColor];
	[subView addSubview:label];
	[subView addSubview:imgV];
	self.waterView = subView;
	NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
	[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
	[[CameraServer server] setWatermarkView:subView Block:^{
	label.text = [NSString stringWithFormat:@"UCloud:%@", [dateFormatter stringFromDate: [NSDate date]]];
	}];

5.5 滤镜使用

5.5.1 打开滤镜

[[CameraServer server] openFilter]

5.5.2 关闭滤镜

[[CameraServer server] closeFilter]

5.5.3 环境特效

特效滤镜使用了demo中的(res)资源文件,使用方方法:

UCloudGPUImagePhotoFilter *photoFilter = [[UCloudGPUImagePhotoFilter alloc]initWithImage:[UIImage imageNamed:@"2_sweety"]];  

然后加入滤镜组中即可使用。

滤镜效果 资源
健康 1_health.png
甜美 2_sweety.png
复古 3_sepia.png
蓝调 4_blue.png
怀旧 5_amatorka.png
通话 6_fairy_tale.png
夏日清新 s_1.png至s_12.png

5.6 日志获取

  • 日志等级
状态枚举 描述
UCDLiveLogLevelOff off
UCDLiveLogLevelError error
UCDLiveLogLevelWarning warn
UCDLiveLogLevelInfo info
UCDLiveLogLevelDebug debug
UCDLiveLogLevelVerbose verbose
  • enableLogFile: 是否开启日志文件,默认开启
  • logFiles: 所有日志文件名
  • logsDirectory: 日志文件路径,默认Documents/Logs/UCloud/ULive/
  • lastLogFilePath: 最近的日志文件路径
  • lastLogFileName: 最近的日志文件名
  • logFileSize: 每个日志文件的大小,每个日志文件如若达到该大小将会进行一次压缩保存,减少沙盒使用量,默认1M
  • logFilesMaxSize: 日志文件夹大小,超过会清理日志,默认20M

5.7 音频降噪

SDK v1.8.1版本加入
nosieSuppressLevel
SDK支持对采集的声音进行降噪处理, 所谓降噪是指是对麦克风采集的声音进行处理, 将采集到的背景噪声过滤掉, 使主播的声音更清晰。

支持4档不同强度的噪声抑制,可以根据具体场景选择对应等级:

  • 在室内安静条件下可以选择比较温和的方式
  • 在嘈杂一点的环境中选择比较高效的方式.

默认UCloudAudioNoiseSuppressMedium;

状态枚举 描述
UCloudAudioNoiseSuppressOff 关闭
UCloudAudioNoiseSuppressLow 温和
UCloudAudioNoiseSuppressMedium 中等
UCloudAudioNoiseSuppressHigh 高效
UCloudAudioNoiseSuppressVeryHigh 激进

注:设置UCloudAudioNoiseSuppressOff为关闭噪声抑制