功能详细使用说明

推流参数设置

  • 视频分辨率 目前支持360p(360x640),540p(540x960),720p(720x1280)三种分辨率,分别对应预定义的常量:
    • LiveConstants.VIDEO_RESOLUTION_360P
    • LiveConstants.VIDEO_RESOLUTION_540P
    • LiveConstants.VIDEO_RESOLUTION_720P

视频分辨率默认值为LiveConstants.VIDEO_RESOLUTION_360P

  • 视频码率 EVLive SDK支持设置视频编码码率的初始值,单位kbps,默认值500。SDK支持根据网络实际情况进行码率自适应,即在网络较差时下调视频码率以保证直播的流畅性,网络变好时上调视频码率以保证直播的清晰度。
  • 音频码率 EVLive SDK音频采样率内部固定为44100Hz,支持16kbps,32kbps,48kbps三种,分别对应预定义的常量:
    • LiveConstants.AUDIO_BITRATE_16K
    • LiveConstants.AUDIO_BITRATE_32K
    • LiveConstants.AUDIO_BITRATE_48K

默认值为LiveConstants.AUDIO_BITRATE_32K

  • 音频编码方式 EVLive SDK支持AAC编码等级的选择,目前支持AACObject_LC和AACObject_HE两种,分别对应预定义的常量:
    • LiveConstants.AUDIO_CODEC_AAC_LC
    • LiveConstants.AUDIO_CODEC_AAC_HE

默认值为LiveConstants.AUDIO_CODEC_AAC_LC,选择LiveConstants.AUDIO_CODEC_AAC_HE可产生高质量的AAC音频。

参数设置列表

方法 功能 推荐值
setVideoResolution 设置视频编码分辨率 VIDEO_RESOLUTION_360P
setMaxVideoBitrate 设置视频最大编码码率 800kbps
setAudioBitrate 设置音频编码码率 32kbps
setAudioCodec 设置AAC音频编码等级 AUDIO_CODEC_AAC_LC
setUseFrontCamera 设置是否使用前置摄像头开始预览 true

事件和错误回调

直播端SDK定义事件信息和错误两种回调

  • OnInfoListener 接收直播过程中所有的事件
  • OnErrorListener 接收直播过程中所有的错误,这里的错误被捕获到后,sdk内部会停止推流

事件信息状态码如下表:

名称 数值 含义
EV_LIVE_INFO_STREAMING 101 正在直播中
EV_LIVE_INFO_RECONNECTING 102 网络正在重连中
EV_LIVE_INFO_RECONNECTED 103 网络重连成功
EV_LIVE_INFO_START_SUCCESS 104 开始直播成功
EV_LIVE_INFO_STOP_SUCCESS 105 停止直播成功
EV_LIVE_INFO_STREAM_SUCCESS 106 流上传成功,真正开始推流
EV_LIVE_INFO_NETWORK_ISSUE 107 网络变差,码率开始降低
EV_LIVE_INFO_NETWORK_BAD 108 网络卡顿,开始丢包

错误状态码如下表:

名称 数值 含义
EV_LIVE_ERROR_STARTING -1001 直播开始过程中出错
EV_LIVE_ERROR_STREAMING -1002 直播过程中出错
EV_LIVE_ERROR_RECONNECT -1003 网络重连失败
EV_LIVE_ERROR_VERSION_LOW -1004 Android系统版本过低,暂不支持直播功能
EV_LIVE_ERROR_OPEN_CAMERA -1005 打开摄像头出错
EV_LIVE_ERROR_CREATE_AUDIORECORD -1006 打开音频设备出错
EV_LIVE_ERROR_VIDEO_ALREADY_STOPPED -1007 直播已经停止
EV_LIVE_ERROR_NETWORK_DIE -1008 网络太差导致无法直播
EV_LIVE_ERROR_AUDIO_ENCODER -1009 音频编码出错
EV_LIVE_ERROR_VIDEO_ENCODER -1010 视频编码出错
EV_LIVE_ERROR_NETWORK -1011 网络发送错误
EV_LIVE_ERROR_SDK_INIT -2001 sdk未初始化或初始化失败
EV_LIVE_PUSH_LOCATE_ERROR -3001 推流资源调度失败
EV_LIVE_PUSH_REDIRECT_ERROR -3002 获取推流地址失败
EV_LIVE_PUSH_PARAMETER_ERROR -3003 推流参数错误
EV_LIVE_PUSH_KEY_ERROR -3004 推流请求key错误

横屏直播

推流端SDK支持横屏推流,除了上层需要做一些处理外,需要调用推流端的相关接口通知底层。

上层ui相关代码:

setRequestedOrientation(mIsLandscape
                ? ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
                : ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

调用接口通知SDK进行采集画面的旋转:

mEVLive.setParameter(builder.build());
mEVLive.setDisplayOrientation(mIsLandscape ? 90 : 0);

注意事项: setDisplayOrientation接口必须在setParameter接口之后调用

水印

推流端SDK提供添加水印功能,水印位置、透明度可自定义。

public void addWaterMarkLogo(String path, float x, float y, float w, float h, float alpha);

参数说明:

  • path,类型:String。logo图片文件的路径(本地sdcard路径、assets路径)
  • x,类型:float。水印图片左上角顶点x坐标,取值0-1之间浮点数,相对于视频左侧实际距离=预览width*x
  • y,类型:float。水印图片左上角顶点y坐标,取值0-1之间浮点数,相对于视频顶部实际距离=预览height*y
  • w,类型:float。水印的显示宽度,0-1之间,实际宽度=预览width*w,为0时会根据h及logo图片的比例自适应
  • h,类型:float。水印的显示高度,0-1之间,实际宽度=预览width*w,为0时会根据w及logo图片的比例自适应
  • alpha,类型:float。水印的透明度,0-1之间

使用示例:

mEVLive.addWaterMarkLogo(TEST_WATERMARK_PATH, 0.08F, 0.06F, 0.2F, 0F, 0.8F);

混音

SDK支持背景音乐播放功能,在主播插入耳机时实现了背景音乐与mic的混音功能。打开和关闭混音功能的接口:

public void setEnableAudioMix(boolean enable);

背景音乐播放

调用背景音乐相关接口实现BGM播放和控制:

  • 初始化BGM播放器

      mEVLive.setBgmOnCompletionListener(new IMediaPlayer.OnCompletionListener() {
          @Override
          public void onCompletion(IMediaPlayer iMediaPlayer) {
              Logger.d(TAG, "end of bgm");
          }
      });
      mEVLive.setBgmOnErrorListener(new IMediaPlayer.OnErrorListener() {
          @Override
          public boolean onError(IMediaPlayer iMediaPlayer, int what, int extra) {
              Logger.e(TAG, "bgm play error: " + what + ", extra: " + extra);
              return false;
          }
      });
      mEVLive.setBgmVolume(0.5F);
      mEVLive.setBgmMute(false);
      mEVLive.setEnableAudioMix(true);
    
  • 打开BGM播放器

      mEVLive.startBgmPlayer(mBgmFilePath, true);
    
  • 关闭BGM播放器

      mEVLive.stopBgmPlayer();
    

美颜

直播端SDK支持美颜功能,在开启直播前和直播过程中可以进行美颜功能开关的设置。

  • 设置开始直播时就开启美颜

      builder.setIsBeautyOn(true);
      mEVLive.setParameter(builder.build());
    
  • 直播过程中美颜开关

      mEVLive.switchBeauty(true); //打开美颜
      mEVLive.switchBeauty(false); //关闭美颜
    

连麦

直播端SDK支持连麦功能,在直播过程中特定观众可以发起连麦请求,主播接受连麦请求后,连麦观众和主播之间进行实时互动。目前版本仅支持1对1连麦。 重要提示:要测试或使用连麦功能,需要向易视云商务人员申请连麦id,否则点击界面上的连麦按钮会提示“id为空,无法进入连麦”

  • 初始化连麦参数

    使用连麦功能之前,需要初始化连麦参数,传入有效的连麦id,一般在界面的OnCreate函数中调用:

      mEVLive.initInteractiveLiveConfig(id, true); //如果是主播端isAnchor参数为true
    
  • 设置连麦小窗口位置

      mEVLive.setRTCSubScreenRect(0.65F, 0.1F, 0.35F, 0.3F);
    

    参数说明:

    • left float 左上角顶点x坐标,0-1之间,相对于视频左侧实际距离=预览width*left,默认值0.65f
    • top float 左上角顶点y坐标,0-1之间,相对于视频顶部实际距离=预览height*top,默认值0.f
    • width float 0-1之间,实际宽度=预览width*width,默认值0.35f
    • height float 0-1之间,实际高度=预览height*height,默认值0.3f
  • 设置辅播大窗口

    SDK内部默认情况下辅播为大窗口,即连麦成功后大窗口总是显示对方的画面

      mEVLive.setEnableMainScreenRemote(false);  //enable参数赋值false,设置对方为小窗口,自己的camera预览为大窗口
    
  • 设置连麦状态回调

      mEVLive.setOnInteractiveLiveListener(listener);
    
  • 开始连麦

    根据上层业务系统获取到唯一的通话id callId,开始连麦

      mEVLive.startInteractiveLive(callId);
    
  • 结束连麦

    结束连麦

      mEVLive.endInteractiveLive();
    

results matching ""

    No results matching ""