全部产品

基础播放器

更新时间:2019-04-12 17:40:56

概念说明

  • 基础播放器

    提供播放视频的基础能力,仅支持以URL的方式播放,建议使用阿里云CDN+OSS存储或使用其他第三方服务的用户使用。

  • 防盗链

    通过判断request请求头的refer是否来源于本站的方式决定视频能否播放。在点播CDN控制台设置referer的具体方法请参考防盗链设置

使用流程

基本使用流程

基础版播放器拥有普通播放器的基本功能,详情请参考产品介绍。配合CDN+OSS、点播服务和直播服务获取播放地址,集成基础播放器SDK框架(仅需集成AliyunPlayer.aar即可),然后调用播放器的URL播放接口即可播放视频或观看直播。基础版使用流程

答题播放使用流程

直播答题通过定制版OBS或阿里云OpenAPI在直播流中插入SEI信息(题目信息),当播放器解析到SEI信息后,将回调给您的App,此时您可以展示题目的具体内容。具体流程如下:答题流程

说明:

  • 详细接入流程请参考直播答题方案,按照说明提交工单申请接入。
  • 答题直播间的Demo仅展示基本流程,由于没有做用户系统,在做测试时,退出当前播放,重新进入才算新进入直播间。如果不退出直播间,错过了前面的答题就相当于被淘汰了。

SDK集成

系统支持

播放器SDK支持Android4.0以上,手机芯片要求armv7或arm64架构。

运行环境

推荐开发者使用开发工具Android Studio,本文档是基于Android Studio开发环境进行编写的。

如何导入

播放器SDK支持普通导入或Maven两种导入方式,选择一种即可。

  • 普通导入

    1. 将如下aar添加到libs文件夹中lib导入aar

    2. 在app的gradle中添加对aar的引用gradle引用aar

    3. 在app的build.gradle中添加:

      1. repositories {
      2. flatDir { dirs 'libs' }
      3. }
    4. 对于3.4.8和3.4.9版本,需要增加OSS的依赖:

      1. compile 'com.aliyun.dpa:oss-android-sdk:+'
  • Maven导入

    敬请期待

SDK使用

播放器初始化

在需要使用播放器SDK的activity里面添加如下初始化方法:

  1. //初始化播放器(只需调用一次即可,建议在application中初始化)
  2. AliVcMediaPlayer.init(getApplicationContext());
  3. //创建播放器的实例
  4. mPlayer = new AliVcMediaPlayer(this, mSurfaceView);

设置播放器通知事件

在使用播放器的activity里面添加通知,具体代码如下:

  1. mPlayer.setPreparedListener(new MediaPlayer.MediaPlayerPreparedListener() {
  2. @Override
  3. public void onPrepared() {
  4. //准备完成时触发
  5. }
  6. });
  7. mPlayer.setPcmDataListener(new MediaPlayer.MediaPlayerPcmDataListener() {
  8. @Override
  9. public void onPcmData(byte[] bytes, int i) {
  10. //音频数据回调接口,在需要处理音频时使用,如拿到视频音频,然后绘制音柱。
  11. }
  12. });
  13. mPlayer.setFrameInfoListener(new MediaPlayer.MediaFrameInfoListener() {
  14. @Override
  15. public void onFrameInfoListener() {
  16. //首帧显示时触发
  17. }
  18. });
  19. mPlayer.setErrorListener(new MediaPlayer.MediaPlayerErrorListener() {
  20. @Override
  21. public void onError(int i, String msg) {
  22. //错误发生时触发,错误码见接口文档
  23. }
  24. });
  25. mPlayer.setCompletedListener(new MediaPlayer.MediaPlayerCompletedListener() {
  26. @Override
  27. public void onCompleted() {
  28. //视频正常播放完成时触发
  29. }
  30. });
  31. mPlayer.setSeekCompleteListener(new MediaPlayer.MediaPlayerSeekCompleteListener() {
  32. @Override
  33. public void onSeekCompleted() {
  34. //视频seek完成时触发
  35. }
  36. });
  37. mPlayer.setStopedListener(new MediaPlayer.MediaPlayerStopedListener() {
  38. @Override
  39. public void onStopped() {
  40. //使用stop接口时触发
  41. }
  42. });
  43. mPlayer.setCircleStartListener(new MediaPlayer.MediaPlayerCircleStartListener(){
  44. @Override
  45. public void onCircleStart() {
  46. //循环播放开始
  47. }
  48. });
  49. //SEI数据回调
  50. mPlayer.setSEIDataListener(new MediaPlayer.MediaPlayerSEIDataListener() {
  51. @Override
  52. public void onSeiUserUnregisteredData(String data) {
  53. //解析SEI数据,在这里可以展示题目信息或答案信息
  54. }
  55. });

说明:更多接口,请参考基础播放器接口文档。

准备播放

在开始播放前,播放器需要prepare,示例如下:

  1. if (mPlayer != null) {
  2. mPlayer.prepareToPlay(mUrl);
  3. }
  4. //或者
  5. if (mPlayer != null) {
  6. mPlayer.prepareAndPlay(mUrl);
  7. }

播放器各种控制功能

用户自行创建播放器的播放控制按钮,在按钮事件里面实现播放器控制接口。基本控制功能有播放、停止、暂停、恢复、重播、Seek、循环播放,其中Seek功能仅对点播有效,直播使用暂停功能会停留在当前直播画面,恢复后开始播放当前直播画面。具体示例如下:

  1. //开始播放
  2. mPlayer.play();
  3. //停止播放
  4. mPlayer.stop();
  5. //暂停播放
  6. mPlayer.pause();
  7. //恢复播放,在暂停后再调用play接口即为恢复播放
  8. mPlayer.play();
  9. //重播
  10. mPlayer.stop();
  11. mPlayer.prepareAndPlay(mUrl);
  12. //Seek,跳转到指定时间点的视频画面,时间单位为毫秒
  13. mPlayer.seekTo(position);
  14. //循环播放
  15. mPlayer.setCirclePlay(true);

播放进度和时间

播放的当前时间和播放时长在prepare成功之后可以获取。

  1. //获取播放的当前时间,单位为毫秒
  2. mPlayer.getCurrentPosition()
  3. //获取视频的总时长,单位为毫秒
  4. mPlayer.getDuration()

倍数播放

在播放器创建之后可调用倍数播放功能,在开始播放之前和之后都可以起作用,仅对点播有效。示例代码如下:

  1. //倍数播放支持0.5~2倍的设置,支持音频变速不变调
  2. mPlayer.setPlaySpeed(speed)

截图功能

播放器在播放时,使用截图接口可以获取当前时间的视频画面。

  1. //截图后获取图片数据,存储、上传或分享需用户自行处理
  2. Bitmap bitmap = mPlayer.snapShot();

视频渲染旋转角度

设置视频画面旋转角度,支持0°,90°,180°,270°。默认:0°,角度按顺时针方向计算。

  1. mPlayer.setRenderRotate(MediaPlayer.VideoRotate.ROTATE_90);

画面镜像

支持设置画面镜像,包括水平镜像和垂直镜像。默认:无镜像。

  1. mPlayer.setRenderMirrorMode(MediaPlayer.VideoMirrorMode.VIDEO_MIRROR_MODE_VERTICAL);

其他功能

播放器还提供了音量控制、静音、亮度调节、显示模式设置等接口。示例代码如下:

  1. //设置播放器音量(系统音量),值为0~100
  2. mPlayer.setVolume(volume);
  3. //设置为静音
  4. mPlayer.setMuteMode(bMute);
  5. //设置亮度(系统亮度),值为0~100
  6. mPlayer.setScreenBrightness(brightness);
  7. //设置显示模式,可设置为fit方式填充或corp方式裁剪充满
  8. mPlayer.setVideoScalingMode(MediaPlayer.VideoScalingMode.VIDEO_SCALING_MODE_SCALE_TO_FIT);
  9. mPlayer.setVideoScalingMode(MediaPlayer.VideoScalingMode.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);

referer设置

客户端发送视频播放器请求时带上referer信息。(同时支持地址和vid播放)。使用流程如下:

  1. 登录点播控制台,单击域名管理
  2. 选择目标域名,单击配置
  3. 单击访问控制,在Refer防盗链区域框,单击修改配置
  4. 选择Refer类型,包括黑名单和白名单。

    说明:

    • 黑名单:如果设置的referer是被添加的域名,则不能访问。
    • 白名单:设置的referer被添加到白名单的域名才可以访问。
  5. 默认不选中允许空referer,如果允许空refer,则客户端不设置referer是可以访问的。如果设置了,但是错误的,则不能访问。

示例代码:

  1. mPlayer.setReferer("http://aliyun.com");

更多请参功能和接口请参考接口文档

混淆配置

  1. -keep class com.alivc.player.**{*;}
  2. -keep class com.aliyun.clientinforeport.**{*;}
  3. -dontwarn com.alivc.player.**

注意事项

  • SDK提供的是aar库,请参考SDK关于aar导入方式添加,集成后包大小增加4.9M左右。
  • 当前SDK仅支持HLS、RTMP、HTTP FLV、mp4、mp3等流格式,支持的视频编码格式为H264,音频编码格式为AAC。建议使用MTS或点播平台转码后使用。
  • 适配安卓4.0以上大多常见机型,低端机型在使用变速功能时可能存在性能问题。
  • 当前ffmpeg版本为V3.3。