开源库中封装了 IMediaPlayer接口,包括一个播放器正常需要的绝大部分功能。在开源库中为该接口提供几种实现方式,包括使用Ijkplayer方式实现和Android自带的解码方式实现,使用时可根据情况自由选择方式。##.主要API介绍(见注释)
/**
* 设置用于画面显示的目标SurfaceHolder
* 画面会显示在SurfaceHolder内部的Surface
* @param sh
*/
void setDisplay(SurfaceHolder sh);
/**
* 设置播放源Uri(网络流地址或文件路径等)
* @param context
* @param uri
*/
void setDataSource(Context context, Uri uri)
throws IOException, IllegalArgumentException, SecurityException, IllegalStateException;
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
void setDataSource(Context context, Uri uri, Map headers)
throws IOException, IllegalArgumentException, SecurityException, IllegalStateException;
void setDataSource(FileDescriptor fd)
throws IOException, IllegalArgumentException, IllegalStateException;
void setDataSource(String path)
throws IOException, IllegalArgumentException, SecurityException, IllegalStateException;
/*
* 当使用AndroidMediaPlayer且版本不低于Build.VERSION_CODES.M时才可用
*/
void setDataSource(IMediaDataSource mediaDataSource);
/**
* 获取播放的源地址
* @return
*/
String getDataSource();
/**
* 进行播放前的准备
*/
void prepareAsync() throws IllegalStateException;
/**
* 开始播放
*/
void start() throws IllegalStateException;
/**
* 停止播放
*/
void stop() throws IllegalStateException;
/**
* 暂停播放
*/
void pause() throws IllegalStateException;
/**
* 播放中让屏幕保持常亮
*/
void setScreenOnWhilePlaying(boolean screenOn);
@Deprecated
void setWakeMode(Context context, int mode);
/**
* 获取视频源宽度
*/
int getVideoWidth();
/**
* 获取视频源高度
*/
int getVideoHeight();
/**
* 当前是否在播放中
*/
boolean isPlaying();
/**
* 滑动到指定播放时长位置
* @param msec 单位:ms
*/
void seekTo(long msec) throws IllegalStateException;
/**
* 获取当前的播放时长位置
* @return 单位:ms
*/
long getCurrentPosition();
/**
* 获取资源的总时长
*/
long getDuration();
/**
* 获取可播放的总时长
* 当用AndroidMediaPlayer实现时,与getDuration()完全一致
*/
long getPlayableDuration();
/**
* 设置播放速率
* 注意:使用IjkPlayer实现时,支持该功能
* AndroidMediaPlayer、ExoPlayer不支持该功能
* @param speed
*/
void setSpeed(float speed);
/**
* 设置音量, 0-1表示百分比
*/
void setVolume(float leftVolume, float rightVolume);
/**
* 设置是否循环播放
* @param looping
*/
void setLooping(boolean looping);
boolean isLooping();
/**
* 重置播放器
*/
void reset();
/**
* 释放资源
*/
void release();
int getAudioSessionId();
MediaInfo getMediaInfo();
@Deprecated
boolean isPlayable();
/*--------------------
* Optional
*/
void setAudioStreamType(int streamtype);
@Deprecated
void setKeepInBackground(boolean keepInBackground);
int getVideoSarNum();
int getVideoSarDen();
/************** 部分使用AndroidMediaPlayer实现时,才可用的方法 **************/
/**
* 设置用于画面显示的目标Surface
* 注意:当用AndroidMediaPlayer实现时该方法才可用
* @param surface
*/
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
void setSurface(Surface surface);
/**
* 注意:当用AndroidMediaPlayer实现时该方法才可用
*/
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
ITrackInfo[] getTrackInfo();
/************** 一些列回调方法的设置 **************/
/**
* 资源准备就绪事件回调
*/
void setOnPreparedListener(OnPreparedListener listener);
/**
* 播放结束事件回调
*/
void setOnCompletionListener(OnCompletionListener listener);
/**
* 缓存更新事件回调
*/
void setOnBufferingUpdateListener(
OnBufferingUpdateListener listener);
/**
* 滑动到指定播放位置 *** 作结果回调
*/
void setOnSeekCompleteListener(
OnSeekCompleteListener listener);
/**
* 视屏尺寸发生变化回调
*/
void setOnVideoSizeChangedListener(
OnVideoSizeChangedListener listener);
/**
* 异常回调
* @param listener
*/
void setOnErrorListener(OnErrorListener listener);
/**
* 视屏信息回调
* @param listener
*/
void setOnInfoListener(OnInfoListener listener);
/**
* 时间相关回调
* @param listener
*/
void setOnTimedTextListener(OnTimedTextListener listener);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)