直播SDK使用说明

应用基本的程序结构是用Manager提供的接口完成相应功能的操作,从AHandler继承实现一个接口类(下面假设实现的类名为XPHandler),在其中完成事件的响应。
core支持三种模式:直播(边拍边传)、先拍后传、断点续传。通常来说,客户端应用程序的做法如下:

  1. 连接视频服务器,并进行认证:

  2. 调用Manager.setPreviewSize来设定预览画面大小
  3. 调用Manager.startPreview来打开预览画面,这一步在拍摄视频时是可选的,如果不显示打开预览画面,则在调用Manager.startRecord时会自动打开预览画面
  4. 调用Manager.setVideoResolution来设定直播视频的画面大小
  5. 调用Manager.startRecord开始直播, 其中传入的is_offline参数应该为false
  6. XPHandler.onLocalFilename被调用时,应用应该记录下来当前拍摄视频在本地存储的文件名, 以在将来断点续传时所用。此事件接口只有在硬编模式,且Manager.startRecord时传入的第三个参数force_really_file==true才可能被回调。因为当force_really_file==false时本地不会产生视频文件,而目前软编模式也不会在本地产生视频文件,在这两种情况下是不支持断点续传的。
  7. XPHandler.onStreamIdNotify被调用时,应用应该记录下来当前的stream id以备用,此时代表视频已经通过服务器开始直播了。
  8. 在直播过程中,可以通过调用Manager.getUploadingSpeed获取直播上传数据的网络速度,也可以通过调用Manager.getCacheRemaining来获取当前由于网络拥塞缓存在本地的数据,以此判断延迟的长短。
  9. 在直播过程中,如果其他用户或管理系统发送的语音或文字消息到达相应的XPHandler.onRecvTextMessageXPHandler.onRecvAudioMessage接口就会被回调。
  10. 在经过一段时间后,根据用户操作响应调用Manager.stopRecord来结束直播。
  11. 在调用Manager.stopRecord后不久,XPHandler.onRecordFinished被回调,表示直播被停止。
  12. 根据网络延迟在长短,XPHandler.onStreamUploaded将在一段时间后被回调,表示此次直播的数据已经完全上传完毕。
  13. 如有需要,重新回到步骤5开始一个新的直播。

注意,在XPHandler.onStreamUploaded被回调前,不可以再次发起一个直播流。应用在界面上应该锁住状态以防止异常发生,如在XPHandler.onStreamUploaded被调用前将直播按钮置于无效状态,禁止用户触发。

  1. 网络连接和认证步骤不是必须的。
  2. 同直播的2,3,4步骤,设定视频属性,打开预览等。
  3. 调用Manager.startRecord传入的第三个参数is_offline应该为true.
  4. XPHandler.onLocalFilename会被回调,应用记录离线拍摄的文件名,以备后面上传时所用。
  5. 在经过一段时间,由用户触发,调用Manager.stopRecord停止直播。
  6. XPHandler.onRecordFinished被回调。

例如:在一个activity(简称a_activity)里登录视频服务器,在另一个activity(简称b_activity)里进行预览拍摄。

  1. 在a_ctivity初始化数据,设置必要信息(参见上述初始化数据,设置 必要信息步骤)
  2. 在a_ctivity连接视频服务器,并进行认证:

  1. 参照“直播”的步骤1,建立连接并完成认证。
  2. 根据XPHandler.onLocalFilename中记录的以前拍摄的视频文件名和路径,调用Manager.uploadVideoFile上传此视频文件。
  3. XPHandler.onParseVideoFileStart被回调,表示文件解析成功,正在开始上传。
  4. XPHandler.onParseVideoFileUpdate被回调,表示文件处理的进度。
  5. XPHandler.onParseVideoFileEnd被回调表示文件处理结束,但不代表文件上传结束。
  6. 在开始上传后和直播一样XPHandler.onStreamIdNotify将被回调,应用由此得到此视频在服务器上的唯一ID
  7. 同样,在上传过程中可以通过Manager.getCacheRemaining获取缓冲大小和Manager.getUploadingSpeed获取上传速度。
  8. 最后当视频完成上传后XPHandler.onStreamUploaded将被回调。
  9. 同样需要注意的是,在XPHandler.onStreamUploaded被回调前,禁止发起一个新的数据流(数据流的定义见术语定义章节)

直播云暂不支持断点续传功能。

  1. 网络连接不是必须的
  2. 调用Manager.setPreviewSize来设定预览画面大小
  3. 调用Manager.startPreview来打开预览画面
  4. 调用Manager.takePicture来拍摄照片,传入所拍照片的尺寸。
  5. XPHandler.onTakePicture被回调,应用记录其中传来的file_name参数,记录此照片文件名(包括全路径)

  1. 参照“直播”步骤1,建立连接并完成认证。
  2. 根据在XPHandler.onTakePicture中记录的以前拍摄的照片文件名和路径,调用Manager.uploadFile上传此照片文件。
  3. XPHandler.onUploadFileStart被回调,以通知应用上传已经开始
  4. 同样,在上传过程中可以通过Manager.getCacheRemaining获取缓冲大小和Manager.getUploadingSpeed获取上传速度。
  5. 在经过一段时间后XPHandler.onUploadFileEnd被回调,以通知应用上传已经完成。

同样,在收到XPHandler.onUploadFileEnd前不能发生一个新的数据流(数据流的定义参考术语定义)。直播云暂不支持该功能,该功能适用于独立视频服务器。

横屏拍摄

AndroidManifest.xml配置android:screenOrientation=”landscape”即为横屏拍摄模式

竖屏拍摄

AndroidManifest.xml配置android:screenOrientation=”portrait”并且在开始直播前 调用以下代码

Manager.forcePortrait(true)

Android4.0以下的设备不支持竖屏拍摄

特别注意

如果AndroidManifest.xml中没有配置android:screenOrientation=""则需要配置android:configChanges="keyboard|orientation",否则在改变设备姿态时,activity会退出