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

观众端(或副麦)

更新时间:2017-09-28 22:51:01

AlivcVideoChatParter的接口和事件通知

接口名称 功能描述
init 初始化资源
startToPlay 开始观看直播
stopPlaying 结束观看直播
reconnect 重新打开视频
release 释放类
setErrorListener 设置错误监听器
setInfoListener 设置信息监听器
setScalingMode 设置观众的渲染模式
changeEarPhoneWhenChat 连麦时插入耳机或者拔出耳机调用
onlineChats 开始多人连麦
addChats 添加连麦
removeChats 移除连麦
offlineChat 结束连麦
setPlayerParam 设置播放参数
setPublisherParam 连麦时设置推流参数
switchCamera 切换前后摄像头
zoomCamera 缩放摄像头
setZoom 设置放大倍数
getCurrentZoom 获取当前放大倍数
getMaxZoom 获取最大放大倍数
focusCameraAtAdjustedPoint 聚焦摄像头到某个位置
setFlashOn 是否打开闪关灯
setAutoFocusOn 设置是否自动聚焦
setFilterParam 设置滤镜参数
getPublisherPerformanceInfo 获取推流性能参数
getPlayerPerformanceInfo 获取连麦后播放性能参数
setPublisherMuteModeOn 推流是否静音
pause 暂停播放或连麦
resume 恢复播放或连麦
getSDKVersion 获取SDK版本号

接口的具体描述如下:

init

  1. public int init(Context context);

功能:初始化资源。

参数:

context:上下文context

备注:无

startToPlay

  1. public int startToPlay(String url, SurfaceView surfaceView);

功能:开始观看直播。调用该函数将启动直播播放器,并播放获取到的直播流。

参数:

url:直播地址

surfaceView:直播播放器的渲染窗口

备注:无

stopPlaying

  1. public int stopPlaying();

功能:结束观看直播。调用该函数将关闭直播播放器,并销毁所有资源。

参数:无

备注:若当前处在连麦状态下,需要先调用offlineChat函数结束连麦,然后在调用该函数结束观看直播。

reconnect

  1. public int reconnect(String url);

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

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

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

release

  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为错误信息,描述MediaError的描述如下:

信息代码 信息常量 信息描述
-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,有以下几种模式:

  • VideoScalingMode.VIDEO_SCALING_MODE_SCALE_TO_FIT:适应屏幕显示
  • VideoScalingMode.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING:充满屏幕显示,保持比例,如果屏幕比例不对,则进行裁剪

备注:无

changeEarPhoneWhenChat

  1. public void changeEarPhoneWhenChat(boolean hasEarPhone);

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

参数: hasEarPhone:是否插入耳机

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

onlineChats

  1. public int onlineChats(String publisherUrl, int width, int height, SurfaceView previewSurface, Map<String, String> publisherParam, String hostPlayUrl, Map<String,SurfaceView> urlSurfaceMap);

功能:开始多人连麦。调用该函数将开启音视频的采集设备、启动预览功能、启动音视频编码功能并将压缩后的音视频流上传。同时将播放地址切换到具备短延时功能的新地址,并且播放其他连麦中的流。

参数:

publisherUrl:连麦时推流的地址

width,height:编码视频的宽和高

previewSurface:连麦时推流的预览窗口

publisherParam:连麦时推流的参数。使用Map的方式,以便于后续的扩展。目前可以设置的参数如下(在类MediaConstants中):

  • 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。默认1000。
  • MediaConstants.PUBLISHER_PARAM_MIN_BITRATE:推流最小码率,单位Kbps。默认600。
  • 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();
    2. * MediaConstants.ScreenRotation.ROTATION_90.getRotation();
    3. * MediaConstants.ScreenRotation.ROTATION_180.getRotation();
    4. * MediaConstants.ScreenRotation.ROTATION_270.getRotation();
  • hostPlayUrl:主播播放短延时地址

playerUrls:其他连麦流的地址

urlSurfaceMap:其他连麦流播放显示的窗口,url所对应的SurfaceView窗口数组

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

备注:目前视频编码采用的是硬编码,多人连麦建议使用180x320分辨率(横屏推流的时候为320x180)。

addChats

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

功能:增加连麦人数。在此之前,主播正在当前观众正在连麦。新增的连麦人数可以是一个人,也可以是多个人。

参数:

urlSurfaceMap:url所对应的SurfaceView窗口数组

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

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

removeChats

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

功能:减少连麦人数。在此之前,主播正在当前观众连麦。减少的连麦人数可以是一个人,也可以是多个人。

参数:

urls:其他连麦流的地址,String数组

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

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

offlineChat

  1. public int offlineChat();

功能:结束连麦。调用该函数将结束观众的推流,销毁推流的所有资源,并将播放地址切换到连麦之前的地址。

参数:无

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

备注:无

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。默认不打开false
  • MediaConstants.PLAYER_PARAM_MUTE_MODE: 设置是否静音。默认不静音false
  • MediaConstants.PLAYER_PARAM_SCALING_MODE: 播放器显示模式,默认VideoScalingMode.VIDEO_SCALING_MODE_SCALE_TO_FIT,目前支持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。默认8000
  • MediaConstants.PUBLISHER_PARAM_CAMERA_POSITION :选择前后摄像头。默认前置。
  • MediaConstants.PUBLISHER_PARAM_AUDIO_SAMPLE_RATE:推流音频采样率,单位Hz。固定32000,暂不可调。
  • MediaConstants.PUBLISHER_PARAM_ORIGINAL_BITRATE:推流初始码率,单位Kbps。默认500。
  • MediaConstants.PUBLISHER_PARAM_MAX_BITRATE:推流最大码率,单位Kbps。默认1500。
  • MediaConstants.PUBLISHER_PARAM_MIN_BITRATE:推流最小码率,单位Kbps。默认200。
  • MediaConstants.PUBLISHER_PARAM_AUDIO_BITRATE:推流音频码率,单位Kbps。固定96,暂不可调。
  • MediaConstants.PUBLISHER_PARAM_VIDEO_FPS:推流视频码率。
  • MediaConstants.PUBLISHER_PARAM_SCREEN_ROTATION :推流横屏/竖屏。默认 0。
    1. * MediaConstants.ScreenRotation.ROTATION_0.getRotation();
    2. * MediaConstants.ScreenRotation.ROTATION_90.getRotation();
    3. * MediaConstants.ScreenRotation.ROTATION_180.getRotation();
    4. * MediaConstants.ScreenRotation.ROTATION_270.getRotation();

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

setPublisherMuteModeOn

  1. public void setPublisherMuteModeOn(boolean silent);

功能:设置推流端的静音模式,仅在连麦过程中使用。

参数: silent:true为静音

备注:无

pause

  1. public int pause();

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

参数:无

返回值:无

备注:无

resume

  1. public int resume();

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

参数:无

返回值:无

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

getSDKVersion

  1. public String getSDKVersion();

功能:获取SDK版本信息

参数:无

返回值:版本号

本文导读目录