IOS

更新日志

简介

ValleyRen Camera Streamer SDK 是一个适用于 iOS平台的直播推流 SDK,可以帮助开发者在应用中实现音视频采集,处理,录制,及推流功能。

声明

本sdk采用授权发布机制,请联系商务获取授权,未授权sdk会有相关限制。

兼容性

1.iOS 8.0 及其以上
2.支持 armv7/armv7s/arm64 处理器
3.不支持bitcode
4.ValleyCameraStreamer.framework 静态库

功能

导入SDK

  1. SDK 为打包的ValleyCameraStreamer.framework的文件,请在使用时添加SDK到Embeded Binaries中,详细参考Demo 工程
  2. 本SDK需要在Info.plist添加访问相机和麦克风权限

导入头文件

import <ValleyCameraStreamer/ ValleyCameraStreamer.h>

初始化ValleyStreamerConfig类

推流需要设置音视频等相关配置参数,首先需要初始化配置参数

ValleyStreamerConfig *config = [ValleyStreamerConfig new]; 
config.videoWidth = 540;
config.videoWidth = 960;
config.videoBitRate = 800*1024;
config.videoFPS = 24;
config.videoMaxKeyFrameInterval = 48;
config.audioChannel = 2;
config.audioSampleRate = 44100;
config.audioBitRate = 128000;

初始化ValleyCameraStreamer

ValleyCameraStreamer *liveStreamer = [[ValleyCameraStreamer alloc]initWithConfig: config]

设置delegate

APP 通过实现delegate获取推流事件和出错信息

liveStreamer.delegate = self

实现以下delegate

-(void)CameraStreamer:(nullable ValleyCameraStreamer*)streamer eventNotify:(ValleyStreamerEvent)event{
switch(event){
}
}

-(void)CameraStreamer:(nullable ValleyCameraStreamer*)streamer errorCode:(ValleyStreamerError)error{
switch(error){
}
}

配置自适应码率调整

本SDK支持推流过程网络带宽抖动时,自动调整推流码率大小以达到流畅推流的目的,用户可以通过以下属性决定是否开启自适应码率功能,默认开启

liveStreamer.autoAdjustBitrate = NO; //关闭自适应码率

配置重连机制

本SDK支持推流过程中网络断开后的重连机制,用户可以通过以下API配置重连次数和间隔

[liveStreamer setReconnectOption: 5 Interval:100]; 重连尝试次数5,重连间隔100ms

配置日志

可选项,SDK定义了以下几种日志等级,用户可以设置想要输出的日志级别

LOG_INFO
LOG_DEBUG
LOG_WARNNING
LOG_ERROR
LOG_NONE
[liveStreamer setDebugLevel: LOG_DEBUG]; //设置debug级别日志

预览

播将APP用于预览的view传递给SDK,SDK就会在view上显示相机预览效果

[liveStreamer startPreview: self];

开始推流

将推流地址参数NSString*url传递给以下API,开启推流

[liveStreamer startStreaming: url];

结束推流

[liveStreamer stopStreaming];

开始录制

将本地录制地址参数NSString*url传递给以下API,开启录制,注意录制功能一定是要在推流中才能进行,如果用户没有开启推流或者推流失败,此时录制会报错

[liveStreamer startRecording: url];

停止录制

[liveStreamer stopRecording];

相机切换

前后摄像头切换,默认开启前置摄像头

[liveStreamer switchCamera];

相机亮度控制

摄像头采集亮度调节取值0.0-1.0,默认1.0

liveStreamer.cameraBrightLevel = 1.0;

相机手电筒控制

手电筒默认关闭,如果没有手电筒,此功能无效

liveStreamer.cameraTorch = YES; 开启手电筒

相机聚焦控制

相机默认为自动对焦模式,用户可以手动设置对焦点

[liveStreamer setFocusingX:10.0 Y:10.0];

美颜设置

SDK有以下几种美颜等级控制

BEAUTY_NONE
BEAUTY_LEVEL_1
BEAUTY_LEVEL_2
BEAUTY_LEVEL_3
BEAUTY_LEVEL_4
liveStreamer.beautyLevel = BEAUTY_LEVEL_4;

滤镜设置

SDK有以下滤镜,用户可以设置滤镜效果及开启关闭

FILTER_TOASTER,
FILTER_AMARO,
FILTER_LORD_KEVIN,
FILTER_NASH_VILLE,
FILTER_WALDEN,
FILTER_XPROLL,
FILTER_HEFE,
FILTER_BRANNAN,
FILTER_SIERRA,
FILTER_VALENCIA,
FILTER_EARLY_BIRD,
FILTER_1977,
FILTER_INKWELL,
FILTER_LOMOFI,
FILTER_HUDSON,
FILTER_SUTRO,
FILTER_RISE

liveStreamer.filter = FILTER_RISE;

水印设置

水印设置通过水印config类来配置水印的参数,通过此参数用户可以控制水印开关,坐标以及大小

ValleyWatermarkConfig *config = [ValleyWatermarkConfig new]; 
config.enable = YES;
config.x = 10.0;
config.y = 10.;
config.w = 300;
config.w = 100;
config.url = url;
[liveStreamer setWatermark: config];

缩放

用户通过设置缩放比例达到显示图像的比例控制

liveStreamer.zoomScale = 2.0;

镜像

通过镜像功能控制图像左右翻转

liveStreamer.mirror= YES;

静音

SDK支持静音推流

liveStreamer.muted= YES;

推流事件

推流定义以下事件和警告信息

EVENT_PUSH_CONNECTING 
EVENT_PUSH_CONNECT_SUCC
EVENT_PUSH_DISCONNECT
EVENT_RECORD_BEGIN
EVENT_RECORD_END
WARNNING_NETWORK_WEAK
WARNNING_RECONNECTING
WARNNING_HW_ACCELERATION_FAIL

错误通知

推流定义以下错误信息

ERROR_OPEN_CAMERA_FAIL 
ERROR_OPEN_MIC_FAIL
ERROR_VIDEO_ENCODE_FAIL
ERROR_AUDIO_ENCODE_FAIL
ERROR_PUSH_CONNECT_FAIL
ERROR_RECORD_FAIL
ERROR_UNSUPPORTED_FORMAT

接口说明

创建及配置相关接口

Nullable instancetype	initWithConfig:(ValleyStreamerConfig *)config

初始化

void	CameraStreamer:(nullable ValleyCameraStreamer *)streamer eventNotify:(ValleyStreamerEvent)event
eventNotify delegate

重连设置

int	setReconnectOption:(int)count Interval:(int)interval

动态码率控制

BOOL	autoAdjustBitrate

设置log等级

void	setDebugLevel:( ValleyLogLevel) logLevel

控制相关接口

开启预览

int	startPreview:(UIView *)view

停止预览

int	stopPreview

开启推流

int	startStreaming:(NSString*)url

关闭推流

int	stopStreaming

开启录制

int	startRecording:(NSString*)url

关闭录制

int	stopRecording

切换摄像头位置

int	switchCamera

设置水印

int	setWatermark:(ValleyWatermarkConfig *)watermark

设置相机聚焦

int	setCameraFocusingX:(float)x Y:(float)y

美颜

ValleyCameraBeauty	beautyLevel