全部产品
云市场

HLS播放器

更新时间:2019-02-20 21:49:18

HLS播放器

HLS播放器使用:

  1. ExoHlsPlayer player = new ExoHlsPlayer(getApplicationContext());
  2. // 使用Exo的SimpleExoPlayerView来作为播放器的UI组件, 也可以自己实现UI组件
  3. simpleExoPlayerView.setPlayer(player.getExoPlayer());
  4. simpleExoPlayerView.requestFocus();
  5. // 设置错误监听
  6. player.setOnErrorListener(new OnErrorListener() {
  7. @Override
  8. public void onError(PlayerException exception) {
  9. makeToast("errorcode: " + exception.getCode() + "\n" + exception.getMessage());
  10. }
  11. });
  12. // 设置状态监听
  13. player.setOnPlayerStateChangedListener(new OnPlayerStateChangedListener() {
  14. @Override
  15. public void onPlayerStateChange(int playerState) {
  16. switch (playerState) {
  17. case Player.STATE_BUFFERING:
  18. break;
  19. case Player.STATE_IDLE:
  20. break;
  21. case Player.STATE_READY:
  22. break;
  23. case Player.STATE_ENDED:
  24. break;
  25. default:
  26. break;
  27. }
  28. }
  29. });
  30. // 设置m3u8地址
  31. player.setDataSource("http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear3/prog_index.m3u8");
  32. // 设置数据源就绪监听器
  33. player.setOnPreparedListener(new OnPreparedListener() {
  34. @Override
  35. public void onPrepared() {
  36. // 数据源就绪后开始播放
  37. player.start();
  38. }
  39. });
  40. player.prepare();
  41. ...
  42. // 暂停播放
  43. player.pause();
  44. ...
  45. // 恢复播放
  46. player.resume();
  47. ...
  48. // 停止播放
  49. player.stop();
  50. ...
  51. // 释放播放器资源
  52. player.release();
  53. ...

接口说明:

ExoHlsPlayer

  • 构造方法
  1. ExoHlsPlayer(Context context);
  • 设置m3u8播放地址
  1. /**
  2. * 设置播放源
  3. * @param url m3u8地址
  4. */
  5. void setDataSource(String url);
  • 设置播放地址为已接入飞燕的IPC设备指定录像名的云端录像文件地址.
  1. /**
  2. * 设置播放地址为已接入飞燕的IPC设备指定录像名的云端录像文件地址.
  3. *
  4. * @param iotId 设备iotId
  5. * @param fileName 录像文件名
  6. */
  7. void setDataSourceByIPCRecordFileName(String iotId, String fileName);
  • 校验和准备数据
  1. /**
  2. * 校验和准备数据
  3. */
  4. void prepare();
  • 开始或恢复播放视频
  1. /**
  2. * 开始播放或恢复播放视频
  3. */
  4. void start();
  • 暂停播放
  1. /**
  2. * 暂停播放, 调用start()恢复播放
  3. */
  4. void pause();
  • seek到指定位置
  1. /**
  2. * seek到指定位置
  3. * @param position 毫秒
  4. */
  5. void seekTo(long positionInMs);
  • 停止播放
  1. /**
  2. * 停止播放
  3. */
  4. void stop();
  • 重置播放器
  1. /**
  2. * 重置播放器
  3. */
  4. void reset();
  • 释放播放器资源
  1. /**
  2. * 释放播放器资源
  3. */
  4. void release();
  • 设置是否循环播放
  1. /**
  2. * 设置是否循环播放
  3. * @param circlePlay true 为循环播放
  4. */
  5. void setCirclePlay(boolean circlePlay);
  • 设置回放速率
  1. /**
  2. * 设置回放的播放速率
  3. * @param speed 速率因子,需大于0
  4. */
  5. void setPlaybackSpeed(float speed);
  • 设置播放器音量
  1. /**
  2. * 设置播放器音量
  3. * @param audioVolume 范围 0-1, 0为静音
  4. */
  5. void setVolume(float audioVolume);
  • 设置音频流通道类型
  1. /**
  2. * 设置音频流通道类型,see {@link android.media.AudioManager}
  3. * 如果音频正在播放,则会因为重新创建AudioTrack导致有短暂停顿.
  4. * @param streamType
  5. */
  6. void setAudioStreamType(int streamType);
  • 设置画面缩放模式
  1. /**
  2. * 设置视频画面缩放模式, 默认为{@link android.media.MediaCodec#VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING}
  3. * @param videoScalingMode 参考:
  4. * {@link android.media.MediaCodec#VIDEO_SCALING_MODE_SCALE_TO_FIT}
  5. * {@link android.media.MediaCodec#VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING}
  6. */
  7. void setVideoScalingMode(int videoScalingMode);
  • 设置surfaceview
  1. /**
  2. * 设置SurfaceView
  3. * @param surfaceview
  4. */
  5. void setSurfaceView(SurfaceView surfaceview);
  • 清除surfaceview
  1. /**
  2. * 清除surfaceview
  3. */
  4. void clearSurfaceView();
  • 设置数据源准备就绪事件监听器
  1. /**
  2. * 设置数据源准备就绪事件监听器
  3. *
  4. * @param listener
  5. */
  6. void setOnPreparedListener(OnPreparedListener listener);
  • 设置播放器错误事件监听器
  1. /**
  2. * 设置播放器错误事件监听器,错误类型参考:
  3. * {@link PlayerException.SOURCE_ERROR}
  4. * {@link PlayerException.RENDER_ERROR}
  5. * {@link PlayerException.UNEXPECTED_ERROR}
  6. * @param listener
  7. */
  8. void setOnErrorListener(OnErrorListener listener);
  • 设置播放状态变更事件监听器
  1. /**
  2. * 设置播放状态变更事件监听器
  3. * @param listener
  4. */
  5. void setOnPlayerStateChangedListener(OnPlayerStateChangedListener listener);
  • 设置首帧被渲染事件监听器
  1. /**
  2. * 设置首帧被渲染事件监听器
  3. * @param listener
  4. */
  5. void setOnRenderedFirstFrameListener(OnRenderedFirstFrameListener listener);
  • 获取当前播放进度
  1. /**
  2. * 获取当前播放进度
  3. * 播放器状态为{@link PlayerState#STATE_READY}时调用有效
  4. * @return 单位MS
  5. */
  6. long getCurrentPosition();
  • 获取视频总时长
  1. /**
  2. * 获取视频总时长
  3. * 播放器状态为{@link #STATE_READY}时调用有效
  4. * @return 单位MS
  5. */
  6. long getDuration();
  • 获取音量
  1. /**
  2. * 获取音量
  3. * @return 范围0-1
  4. */
  5. float getVolume();
  • 获取播放器状态
  1. /**
  2. * 获取播放状态
  3. * @return 状态枚举,参考:
  4. * {@link PlayerState#STATE_IDLE} 播放器初始状态
  5. * {@link PlayerState#STATE_BUFFERING} 缓冲中状态
  6. * {@link PlayerState#STATE_READY} 缓冲结束开始播放状态
  7. * {@link PlayerState#STATE_ENDED} 播放完成状态
  8. */
  9. int getPlayState();