添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
慷慨大方的蜡烛  ·  android exoplayer ...·  2 周前    · 
活泼的卤蛋  ·  Android ...·  2 周前    · 
犯傻的黄豆  ·  Get ...·  1 月前    · 
打酱油的椰子  ·  校友风采 | ...·  3 月前    · 

ExoPlayer HLS播放器基于ExoPlayer框架开发,本文介绍Android应用端,ExoPlayer HLS播放器接口的详细信息。

构造方法

ExoHlsPlayer(Context context);

设置M3U8播放地址

/**
   * 设置播放源
   * @param url M3U8地址
  void setDataSource(String url);

按云存储录像的文件名设置视频数据源

/**
   * 按云存储录像的文件名设置视频数据源
   * @param iotId    设备iotId
   * @param fileName 录像文件名
   void setDataSourceByIPCRecordFileName(String iotId, String fileName);

校验和准备数据

/**
   * 校验和准备数据
  void prepare();

开始或恢复播放视频

/**
   * 开始播放或恢复播放视频
  void start();

暂停播放

/**
   * 暂停播放, 调用start()恢复播放
  void pause();

跳转到指定位置

/**
   * 跳转到指定位置
   * @param position 单位为毫秒
  void seekTo(long positionInMs);

停止播放

**
   * 停止播放
  void stop();

重置播放器

/**
   * 重置播放器
  void reset();

释放播放器资源

/**
   * 释放播放器资源
  void release();

设置是否循环播放

/**
  * 设置是否循环播放
  * @param circlePlay true为循环播放
  void setCirclePlay(boolean circlePlay);

设置回放速率

/**
  * 设置回放的播放速率
  * @param speed 表示速率因子,取值范围为(0,2],1表示正常速率
  void setPlaybackSpeed(float speed);

设置播放器音量

/**
   * 设置播放器音量
   * @param audioVolume范围为0~1,0为静音
  void setVolume(float audioVolume);

设置音频流通道类型

/**
   * 设置音频流通道类型,参见{@link android.media.AudioManager}
   * 如果音频正在播放,则会因为重新创建AudioTrack导致有短暂停顿
   * @param audioStreamType
  void setAudioStreamType(int audioStreamType);

设置画面缩放模式

/**
   * 设置视频画面缩放模式,默认为{@link android.media.MediaCodec#VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING}
   * @param videoScalingMode 参见:
   * {@link android.media.MediaCodec#VIDEO_SCALING_MODE_SCALE_TO_FIT}
   * {@link android.media.MediaCodec#VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING}
  void setVideoScalingMode(int videoScalingMode);

设置SurfaceView

/**
   * 设置SurfaceView
   * @param surfaceview
  void setSurfaceView(SurfaceView surfaceview);

清除SurfaceView

/**
   * 清除surfaceview
  void clearSurfaceView();

设置TextureView

/**
     * 设置TextureView,同一个TextureView不可被多个播放器共享,提供支持手势操作的控件ZoomableTextureView可做参照
     * @param textureview
    void setTextureView(TextureView textureView);

清除TextureView

/**
     * 清除textureview
    void clearTextureView();

设置数据源准备就绪事件监听器

/**
   * 设置数据源准备就绪事件监听器
   * @param listener
  void setOnPreparedListener(OnPreparedListener listener);
interface OnPreparedListener {
     * 数据源准备就绪回调
    void onPrepared();
}

设置播放器错误事件监听器

/**
   * 设置播放器错误事件监听器,错误类型参见:
   * {@link PlayerException.SOURCE_ERROR}
   * {@link PlayerException.RENDER_ERROR}
   * {@link PlayerException.UNEXPECTED_ERROR}
   * @param listener
  void setOnErrorListener(OnErrorListener listener);
interface OnErrorListener{
     * 播放器错误回调,参见
     * {@link PlayerException}
     * @param exception
    void onError(PlayerException exception);
}

设置播放状态变更事件监听器

/**
   * 设置播放状态变更事件监听器
   * @param listener
  void setOnPlayerStateChangedListener(OnPlayerStateChangedListener listener);
interface OnPlayerStateChangedListener{
     * 播放器状态变更回调
     * @param playerState 参见
     *                    {@link PlayerState#STATE_IDLE}
     *                    {@link PlayerState#STATE_BUFFERING}
     *                    {@link PlayerState#STATE_READY}
     *                    {@link PlayerState#STATE_ENDED}
    void onPlayerStateChange(int playerState);
}

设置首帧被渲染事件监听器

/**
   * 设置首帧被渲染事件监听器
   * @param listener
  void setOnRenderedFirstFrameListener(OnRenderedFirstFrameListener listener);
 interface OnRenderedFirstFrameListener {
     * 首帧被渲染回调
    void onRenderedFirstFrame();
}

设置视频内容宽高变更回调

    /**
     * 设置视频内容宽高变更回调
     * @param listener
    void setOnVideoSizeChangedListener(OnVideoSizeChangedListener listener);
 interface OnVideoSizeChangedListener{
     * 内容宽高改变时的回调
     * @param width  视频内容宽,单位为像素
     * @param height 视频内容高,单位为像素
    void onVideoSizeChanged(int width, int height);
}

获取当前播放进度

/**
   * 获取当前播放进度,相对于开始位置的偏移量
   * 播放器状态为{@link PlayerState#STATE_READY}时调用有效
   * @return 单位MS
  long getCurrentPosition();

获取视频总时长

/**
   * 获取视频总时长
   * 播放器状态为{@link #STATE_READY}时调用有效
   * @return 单位MS
  long getDuration();

获取音量

/**
   * 获取音量
   * @return 取值范围0~1
  float getVolume();

获取播放器状态

/**
   * 获取播放状态
   * @return 状态枚举:
   * {@link PlayerState#STATE_IDLE} 播放器初始状态
   * {@link PlayerState#STATE_BUFFERING} 缓冲中状态
   * {@link PlayerState#STATE_READY} 缓冲结束开始播放状态
   * {@link PlayerState#STATE_ENDED} 播放完成状态
  int getPlayState();

ZoomableTextureView相关接口

设置画面放大倍数上限

    /**
     * 设置画面放大倍数上限
     * 默认为4倍
     * @param scale 倍数
    void setMaxScale(float scale);

重置画面缩放比例为1

    /**
     * 重置画面缩放比例为1
     * @param smooth 是否带有平滑变化效果
    void zoomOut(boolean smooth);

获取当前缩放比

    /**
     * 获取当前缩放比
     * @return  未放缩时为1.0f
    float getScale();

设置监听器

    /* 设置监听器
     * @param listener
    void setOnZoomableTextureListener(OnZoomableTextureListener listener);
    public interface OnZoomableTextureListener{
         * 当画面缩放比例发生变化时回调
         * @param zoomableTextureView
         * @param scale               画面缩放比例
        void onScaleChanged(ZoomableTextureView zoomableTextureView, float scale);
         * view双击事件回调
         * @param zoomableTextureView
         * @param e                   MotionEvent
         * @return 事件是否被处理,如果返回false,则会启用内部缩放逻辑
        boolean onDoubleTap(ZoomableTextureView zoomableTextureView, MotionEvent e);
         * view单击事件回调
         * @param zoomableTextureView
         * @param e                   MotionEvent
         * @return 事件是否被处理
        boolean onSingleTapConfirmed(ZoomableTextureView zoomableTextureView, MotionEvent e);
         * view长按事件回调
         * @param zoomableTextureView
         * @param e                   MotionEvent
        void onLongPress(ZoomableTextureView zoomableTextureView, MotionEvent e);
    }

设置边缘监听器


     void setOnViewEdgeListener(OnViewEdgeListener listener)
     interface OnViewEdgeListener{
         * 当第一次拖动到view的边缘
        void onViewEdgeFirstTouched();
         * 当拖动到view下边缘,持续拖动会持续回调
         * @param zoomableTextureView
         * @param delta    持续处于边缘时触摸移动相对上次的差值
        void onBottomEdge(ZoomableTextureView zoomableTextureView, float delta);
         * 当拖动到view上边缘,持续拖动会持续回调
         * @param zoomableTextureView
         * @param delta               持续处于边缘时触摸移动相对上次的差值
        void onTopEdge(ZoomableTextureView zoomableTextureView, float delta);
         * 当拖动到view右边缘,持续拖动会持续回调
         * @param zoomableTextureView
         * @param delta               持续处于边缘时触摸移动相对上次的差值
        void onRightEdge(ZoomableTextureView zoomableTextureView, float delta);
         * 当拖动到view左边缘,持续拖动会持续回调
         * @param zoomableTextureView
         * @param delta               持续处于边缘时触摸移动相对上次的差值
        void onLeftEdge(ZoomableTextureView zoomableTextureView, float delta);