全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
视频直播

主播端接口

更新时间:2017-10-17 10:36:19

AlivcVideoChatHost的接口和事件通知

接口名称 功能描述
init 初始化资源
prepareToPublish 准备推流,建立预览界面
startToPublish 开始推流
stopPublishing 结束推流
finishPublishing 结束推流预览
release 释放资源
setErrorListener 设置错误监听器
setInfoListener 设置信息监听器
setScalingMode 设置主播的渲染模式
changeEarPhoneWhenChat 连麦时插入耳机后调用
launchChats 开始连麦,适用于邀请多人连麦
addChats 增加连麦人数
removeChats 减少连麦人数
abortChat 结束连麦
reconnectChat 重新打开播放器
setPlayerParam 设置连麦后播放参数
setPublisherParam 动态设置推流配置参数
setFilterParam 设置滤镜参数
switchCamera 切换前后摄像头
zoomCamera 缩放摄像头
setZoom 设置放大倍数
getCurrentZoom 获取当前放大倍数
getMaxZoom 获取最大放大倍数
setMute 静音
focusCameraAtAdjustedPoint 聚焦摄像头到某个位置
getPublisherPerformanceInfo 获取推流性能参数
getPlayerPerformanceInfo 获取连麦后播放性能参数
setFlashOn 是否打开闪关灯
setAutoFocusOn 设置是否自动聚焦
pause 后台暂停,没有视频有音频
resume 恢复到前台
getSDKVersion 获取SDK版本号


接口的具体描述如下:

init

  1. public int init(Context context);

功能:初始化AlivcVideoChatHost类。

参数:

context:上下文context

备注:无

prepareToPublish

  1. public int prepareToPublish(SurfaceView previewSurface,
  2. int width, int height, Map<String, String> publisherParam);

功能:准备推流。调用该函数后将对音视频采集的硬件设备进行初始化,对音视频编码器进行初始化,并开启美颜等滤镜。同时,主播可以预览到经过滤镜处理以后的视频效果。

参数:

previewSurface:推流或连麦过程中供主播预览的view

width、height:推流视频的宽和高

publisherParam:主播推流的参数。使用Map的方式,以便于后续的扩展。目前可以设置的参数如下:

  • MediaConstants.PUBLISHER_PARAM_UPLOAD_TIMEOUT:推流上传超时时间,单位ms。默认8000。

  • MediaConstants.PUBLISHER_PARAM_CAMERA_POSITION :选择前后摄像头。默认前置。

    1. * MediaConstants.CameraFacing.CAMERA_FACING_BACK
    2. * MediaConstants.CameraFacing.CAMERA_FACING_FRONT
  • MediaConstants.PUBLISHER_PARAM_AUDIO_SAMPLE_RATE:推流音频采样率,单位Hz。固定32000,暂不可调。

  • MediaConstants.PUBLISHER_PARAM_ORIGINAL_BITRATE:推流初始码率,单位Kbps。默认800。

  • MediaConstants.PUBLISHER_PARAM_MAX_BITRATE:推流最大码率,单位Kbps。默认2000。

  • MediaConstants.PUBLISHER_PARAM_MIN_BITRATE:推流最小码率,单位Kbps。默认300。

  • MediaConstants.PUBLISHER_PARAM_AUDIO_BITRATE:推流音频码率,单位Kbps。固定96,暂不可调。

  • MediaConstants.PUBLISHER_PARAM_VIDEO_FPS:推流视频码率,单位Kbps。默认25

  • MediaConstants.PUBLISHER_PARAM_SCREEN_ROTATION:推流横屏/竖屏。默认 0。

    1. * MediaConstants.ScreenRotation.ROTATION_0.getRotation();//0:竖屏
    2. * MediaConstants.ScreenRotation.ROTATION_90.getRotation();//1:左横屏
    3. * MediaConstants.ScreenRotation.ROTATION_180.getRotation();//2:反向竖屏
    4. * MediaConstants.ScreenRotation.ROTATION_270.getRotation();//3:右横屏

备注:

目前视频编码采用的是硬编码,支持四种分辨率:720x1280/540x960/360x640/180x320(横屏推流的时候为1280x720/960x540/640x360/320x180)。

本接口是同步接口。

startToPublish

  1. public int startToPublish(String url);

功能:开始推流。调用该函数将启动音视频的编码,并将压缩后的音视频流打包上传到服务器。

参数:

url:主播推流地址。

备注:

  • 此处的推流仅仅是主播单向的直播推流,与连麦这种双向互动没有关系。必须先调用函数prepareToPublish后才能调用该函数。

  • 本接口是同步接口.

stopPublishing

  1. public int stopPublishing();

功能:结束推流。调用该函数将结束本次的直播推流,并关闭音视频编码功能,但采集、滤镜功能仍然运行,预览功能仍然保留。

参数:无。

备注:

  • 若在连麦状态下调用该函数,则sdk会先停止连麦,再结束推流。

  • 本接口是同步接口。

finishPublishing

  1. public int finishPublishing();

功能:退出推流直播。调用该函数将停止采集、滤镜功能,销毁预览窗口,释放所有资源。

参数:无。

备注:

  • 若调用了函数startToPublish,则必须调用函数stopPublishing以后才可以调用该函数。

  • 本接口是同步接口。

  1. public int release();

功能:释放资源

参数:无

备注:无

setErrorListener

  1. public void setErrorListener(OnErrorListener errorListener);

功能:设置错误监听器

参数:错误监听器

  1. interface OnErrorListener {
  2. boolean onError(IVideoChatParter vch, int what, String extra);
  3. }

what为错误代码,extra为错误信息,错误MediaError的描述如下:

错误代码 错误常量 错误描述
-100 MediaError.ALIVC_ERR_MEMORY_POOR 内存不够
-101 MediaError.ALIVC_ERR_PUBLISHER_OPEN_FAILED 推流连接失败
-200 MediaError.ALIVC_ERR_PUBLISHER_ILLEGAL_ARGUMENT 无效的参数
-400 MediaError.ALIVC_ERR_PUBLISHER_NETWORK_UNCONNECTED 网络未连接
-401 MediaError.ALIVC_ERR_PUBLISHER_AUDIO_CAPTURE_DISABLED 音频被禁止
-402 MediaError.ALIVC_ERR_PUBLISHER_VIDEO_CAPTURE_DISABLED 视频被禁止
-403 MediaError.ALIVC_ERR_PUBLISHER_MALLOC_FAILED 内存分配失败
-404 MediaError.ALIVC_ERR_PUBLISHER_VIDEO_ENCODER_INIT_FAILED 视频初始化失败
-405 MediaError.ALIVC_ERR_PUBLISHER_AUDIO_ENCODER_INIT_FAILED 音频初始化失败
-406 MediaError.ALIVC_ERR_PUBLISHER_SEND_DATA_TIMEOUT 发送数据超时
-407 MediaError.ALIVC_ERR_PUBLISHER_NETWORK_POOR 网络较慢
-408 MediaError.ALIVC_ERR_PUBLISHER_ENCODE_AUDIO_FAILED 音频编码失败
-409 MediaError.ALIVC_ERR_PUBLISHER_ENCODE_VIDEO_FAILED 视频编码失败
-410 MediaError.ALIVC_ERR_PUBLISHER_VIDEO_CAPTURE_FPS_SLOW 音频采集较慢
-411 MediaError.ALIVC_ERR_PUBLISHER_AUDIO_CAPTURE_NO_DATA 音频采集出错
-412 MediaError.ALIVC_ERR_PUBLISHER_VIDEO_CAPTURE_NO_DATA 视频采集出错
400 MediaError.ALIVC_ERR_PLAYER_OPEN_FAILED 播放打开失败
401 MediaError.ALIVC_ERR_PLAYER_NO_NETWORK 播放没有网络连接
503 MediaError.ALIVC_ERR_PLAYER_NO_SURFACEVIEW 播放没有设置显示窗口
504 MediaError.ALIVC_ERR_PLAYER_INVALID_INPUTFILE 播放无效的输入
505 MediaError.ALIVC_ERR_PLAYER_INVALID_CODEC 播放不支持的解码格式
506 MediaError.ALIVC_ERR_PLAYER_NO_MEMORY 播放无足够内存
511 MediaError.ALIVC_ERR_PLAYER_READ_PACKET_TIMEOUT 播放读取数据超时
512 MediaError.ALIVC_ERR_PLAYER_AUDIO_PLAY 音频播放错误
1002 MediaError.ALIVC_ERR_PLAYER_UNSUPPORTED 播放不支持的解码
1003 MediaError.ALIVC_ERR_PLAYER_TIMEOUT 播放超时

备注:无

setInfoListener

  1. public void setInfoListener(OnInfoListener infoListener);

功能:设置信息监听器

参数:信息监听器

  1. interface OnInfoListener {
  2. boolean onInfo(IVideoChatHost vch, int what, String extra);
  3. }

what为信息代码,extra为错误信息描述如下:

信息代码 信息常量 信息描述
-2001 MediaError.ALIVC_INFO_LAUNCH_CHAT_END launchChat结束
-2002 MediaError.ALIVC_INFO_ABORT_CHAT_END abortChat结束
-2003 MediaError.ALIVC_INFO_ONLINE_CHAT_END onlineChat结束
-2004 MediaError.ALIVC_INFO_OFFLINE_CHAT_END offlineChat结束
-2005 MediaError.ALIVC_INFO_ADD_CHAT_END addChat结束
-2006 MediaError.ALIVC_INFO_REMOVE_CHAT_END removeChat结束
-500 MediaError.ALIVC_INFO_PUBLISH_NETWORK_GOOD 推流网络较好
-501 MediaError.ALIVC_INFO_PUBLISH_RECONNECT_START 重连开始
-502 MediaError.ALIVC_INFO_PUBLISH_RECONNECT_SUCCESS 重连成功
-503 MediaError.ALIVC_INFO_PUBLISH_RECONNECT_FAILURE 重连失败
-504 MediaError.ALIVC_INFO_PUBLISH_DISPLAY_FIRST_FRAME 推流首次显示通知
-505 MediaError.ALIVC_INFO_PUBLISH_START_SUCCESS 推流开始成功
3 MediaError.ALIVC_INFO_PLAYER_FIRST_FRAME_RENDERED 播放首帧显示
101 MediaError.ALIVC_INFO_PLAYER_BUFFERING_START 播放缓冲开始
102 MediaError.ALIVC_INFO_PLAYER_BUFFERING_END 播放缓冲结束
104 MediaError.ALIVC_INFO_PLAYER_PREPARED_PROCESS_FINISHED 播放准备完成通知
150 MediaError.ALIVC_INFO_PLAYER_INTERRUPT_PLAYING 播放被中断
151 MediaError.ALIVC_INFO_PLAYER_STOP_PROCESS_FINISHED 播放结束通知
152 MediaError.ALIVC_INFO_PLAYER_NETWORK_POOR 播放器网络差,不能及时下载数据包

备注:无

setScalingMode

  1. public void setScalingMode(VideoScalingMode mode);

功能:设置主播的渲染模式。

参数:VideoScalingMode mode,有以下几种模式:

VIDEO_SCALING_MODE_SCALE_TO_FIT:适应屏幕显示

VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING:充满屏幕显示,保持比例,如果屏幕比例不对,则进行裁剪

备注:无

changeEarPhoneWhenChat

  1. public void changeEarPhoneWhenChat(boolean hasEarPhone);

功能:当插入或者拔出耳机的时候调用该函数。

参数:

hasEarPhone:是否插入耳机

备注:插入或者拔出耳机对连麦的回音消除有影响,此函数必须在连麦的时候调用。

launchChat

  1. public int launchChats(Map<String,SurfaceView> urlSurfaceMap);

功能:开始连麦。在此之前,主播处于纯推流状态。主播可以对一个人发起连麦,也可以对多个人发起连麦。

参数:

urlSurfaceMap:url所对应的窗口数组

返回值: 0表示成功;非0表示失败

备注:必须调用函数startToPublish后才能调用该函数。

addChats

  1. public int addChats(Map<String,SurfaceView> urlSurfaceMap);

功能:增加连麦人数。在此之前,主播可以有一个或多个副麦。新增的副麦人数可以是一个,也可以是多个。

参数:

urlSurfaceMap:url所对应的窗口数组

返回值: 0表示成功;非0表示失败。

备注:必须调用函数launchChats后才能调用该函数。

removeChats

  1. public int removeChats(List<String> urls);

功能:减少连麦人数。在此之前,主播可以有一个或多个副麦。减少的副麦人数可以是一个,也可以是多个。

参数:

urls:所有退出连麦的副麦的播放地址

返回值: 0表示成功;非0表示失败

备注:

  • 必须调用函数launchChats后才能调用该函数。

  • 允许所有的副麦都退出连麦,此时,调用removeChats与abortChat功能相同。

  • 本接口是同步接口。

abortChat

  1. public int abortChat();

功能:结束连麦。调用该函数将关闭播放器,销毁用于连麦的播放窗口。

参数:无。

备注:无。

reconnectChat

  1. public int reconnectChat(String url);;

功能:当播放视频超时或者遇到网络切换断流时,调用此函数进行重新连接打开。

参数:url,指定重新连接的播放地址。

备注:此函数不会有黑屏的情况。

setPlayerParam

  1. public void setPlayerParam(Map<String, String> param);

功能:设置播放器相关的配置参数。

参数:

param:播放器相关的配置参数。使用Map的方式,以便于后续的扩展。目前可以设置的参数如下:

  • MediaConstants.PLAYER_PARAM_DOWNLOAD_TIMEOUT: 播放器缓冲超时时间,单位ms。默认15000。
  • MediaConstants.PLAYER_PARAM_DROP_BUFFER_DURATION:播放器开始丢帧阈值,单位ms。连麦过程中默认值为1000,非连麦过程中默认值为8000。
  • MediaConstants.PLAYER_PARAM_ENABLE_NATIVE_LOG:是否打开native log。
  • MediaConstants.PLAYER_PARAM_MUTE_MODE: 设置是否静音。
  • MediaConstants.PLAYER_PARAM_SCALING_MODE: 播放器显示模式,目前支持2种。 VideoScalingMode.VIDEO_SCALING_MODE_SCALE_TO_FIT:适应屏幕显示; VideoScalingMode.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING:充满屏幕显示,保持比例,如果屏幕比例不对,则进行裁剪。

备注:与类AlivcVideoChatHost中接口函数setPlayerParam功能与参数设置相同。

setPublisherParam

  1. public void setPublisherParam(Map<String, String> param);

功能:设置推流相关的配置参数。

参数:

param:播放器相关的配置参数。使用Map的方式,以便于后续的扩展。目前可以设置的参数如下(在类MediaConstants中):

  • MediaConstants.PUBLISHER_PARAM_UPLOAD_TIMEOUT:推流上传超时时间,单位ms。
  • MediaConstants.PUBLISHER_PARAM_CAMERA_POSITION :选择前后摄像头。默认前置
    1. * MediaConstants.CameraFacing.CAMERA_FACING_BACK
    2. * MediaConstants.CameraFacing.CAMERA_FACING_FRONT
  • MediaConstants.PUBLISHER_PARAM_AUDIO_SAMPLE_RATE:推流音频采样率,单位Hz。固定32000,暂不可调。
  • MediaConstants.PUBLISHER_PARAM_ORIGINAL_BITRATE:推流初始码率,单位Kbps。800。
  • MediaConstants.PUBLISHER_PARAM_MAX_BITRATE:推流最大码率,单位Kbps。2000。
  • MediaConstants.PUBLISHER_PARAM_MIN_BITRATE:推流最小码率,单位Kbps。300。
  • MediaConstants.PUBLISHER_PARAM_AUDIO_BITRATE:推流音频码率,单位Kbps。固定96,暂不可调。
  • MediaConstants.PUBLISHER_PARAM_VIDEO_FPS:推流视频码率。默认25。
  • MediaConstants.PUBLISHER_PARAM_SCREEN_ROTATION :推流横屏/竖屏。默认0。
    1. * MediaConstants.ScreenRotation.ROTATION_0.getRotation()//0:竖屏;
    2. * MediaConstants.ScreenRotation.ROTATION_90.getRotation()//1:左横屏;
    3. * MediaConstants.ScreenRotation.ROTATION_180.getRotation()//2:反向竖屏;
    4. * MediaConstants.ScreenRotation.ROTATION_270.getRotation()//3:右横屏;

switchCamera

  1. public void switchCamera();

功能:切换摄像头

参数:无

备注:该函数可以在连麦的过程中随时进行调用。

zoomCamera

  1. public void zoomCamera(float scaleFactor);

功能:摄像头放大倍率。调用该函数将对当前视频进行光学放大。放大后的视频将显示在预览窗口。

参数:

scaleFactor:大于0(大于0小于1,表示缩小,最小为原始大小;大于1表示放大)

备注:该函数仅对后置摄像头有效。

focusCameraAtAdjustedPoint

  1. public void focusCameraAtAdjustedPoint(float xRatio, float yRatio);

功能:聚焦到某个设置的点。调用该函数可以聚焦到预览窗口上人为指定的某个点。

参数:

xRatio:点所在屏幕x轴的位置/屏幕宽度

yRatio:点所在的屏幕y轴的位置/屏幕的长度

备注:无

setZoom

  1. void setZoom(int zoom);

功能:设置放大倍数

参数:zoom:放大倍数,大于0,小于maxZoom

备注:无

getCurrentZoom()

  1. public int getCurrentZoom();

功能:获取当前放大倍数

参数:无

返回值: 当前放大倍数

备注:无

getMaxZoom

  1. public int getMaxZoom()

功能:获取最大放大倍数

参数:无

返回值:最大放大倍数

备注:无

setFlashOn

  1. public void setFlashOn(boolean flashOn);

功能:设置是否打开闪关灯。

参数:

flashOn:true为打开,否则为关闭

备注:该函数可以在连麦过程中随时进行调用。

setAutoFocusOn

  1. public void setAutoFocusOn(boolean autoFocus);

功能:设置是否自动聚焦。

参数:

autoFocus:true为打开自动聚焦,否则为关闭

备注:该函数可以在连麦过程中随时进行调用。

setFilterParam

  1. public void setFilterParam(Map<String, String> param);

功能:设置滤镜的相关参数。

参数:

param:滤镜相关的配置参数。使用Map的方式,以便于后续的扩展。目前只有一个美颜的滤镜,可以设置的参数如下:

  • MediaConstants.FILTER_PARAM_BEAUTY_ON:美颜是否开启,默认为true

  • MediaConstants.FILTER_PARAM_BEAUTY_WHITEN:美白程度[0,100],默认为0

  • MediaConstants.FILTER_PARAM_BEAUTY_BUFFING:磨皮程度[0,35],默认为0

备注:该函数可以在连麦过程中随时进行调用。

getPublisherPerformanceInfo

  1. public AlivcPublisherPerformanceInfo getPublisherPerformanceInfo();

功能:获得与推流相关的性能参数。

参数:无

返回值:推流性能参数。具体如下:

  • audioEncodeBitrate: 音频编码速度,单位Kbps
  • videoEncodeBitrate: 视频编码速度,单位Kbps
  • audioUploadBitrate: 音频上传速度,单位kbps
  • videoUploadBitrate: 视频上传速度,单位kbps
  • audioPacketsInBuffer: 缓冲的音频帧数
  • videoPacketsInBuffer: 缓冲的视频帧数
  • videoEncodedFps: 视频编码帧率
  • videoUploadedFps: 视频上传帧率
  • videoCaptureFps: 视频采集帧率
  • currentlyUploadedVideoFramePts: 当前上传的视频帧的pts,单位ms
  • currentlyUploadedAudioFramePts: 当前上传的音频帧的pts,单位ms
  • previousKeyFramePts: 上一个关键帧的pts,单位ms
  • totalFramesOfEncodedVideo: 视频编码总帧数
  • totalTimeOfEncodedVideo: 视频编码总耗时,单位ms
  • totalSizeOfUploadedPackets: 上传的音视频流总量,单位Kbyte
  • totalTimeOfPublishing: 当前推流的总时间,单位ms
  • totalFramesOfVideoUploaded: 上传的视频帧总数
  • dropDurationOfVideoFrames: 视频丢帧的累计时长,单位ms
  • videoDurationFromeCaptureToUpload: 当前音频帧从采集到上传的耗时,单位ms
  • audioDurationFromeCaptureToUpload: 当前视频帧从采集到上传的耗时,单位ms

getPlayerPerformanceInfo

  1. public AlivcPlayerPerformanceInfo getPlayerPerformanceInfo(String url);

功能:获得与播放相关的性能参数。

参数:指定播放url的性能参数

返回值:播放性能参数。具体如下:(与类AlivcVideoChatHost中相同)

  • videoPacketsInBuffer: 缓冲的视频帧数
  • audioPacketsInBuffer: 缓冲的音频帧数
  • videoDurationFromDownloadToRender: 视频从下载到播放的耗时,单位ms
  • audioDurationFromDownloadToRender: 音频从下载到播放的耗时,单位ms
  • videoPtsOfLastPacketInBuffer: 缓冲区中最后一帧视频的pts
  • audioPtsOfLastPacketInBuffer: 缓冲区中最后一帧音频的pts
  • liveDiscardDuration: 丢帧的总长度
  • dowloadSpeed: packets的下载速度 kbps

pause

  1. public int pause();

功能:暂停播放或连麦。在播放或连麦过程中,观众如果退入后台、锁屏或有电话接入,可以调用本接口。

参数:无

返回值:无

备注:无

resume

  1. public int resume();

功能:恢复推流或连麦。在观看或连麦过程中,观众如果发生退入后台、锁屏或有电话接入的情况,希望能够回到前台继续播放或推流,可以调用本接口。

参数:无

返回值:无

备注:必须先调用pause,然后才能调用resume。

getSDKVersion

  1. public String getSDKVersion();

功能:获取版本信息。

参数:无

返回值:版本号。

本文导读目录