Android IjkPlayer API介绍

##.简介
         IjkPlayer是Bilibili推出的一个开源播放器库,底层是基于ffmpeg来实现的,支持各种常见的拉流协议,支持软解码和硬解码,支持变速播放。很多视频平台都在使用。
开源库中封装了 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<String, String> 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);

猜你喜欢

转载自blog.csdn.net/u013914309/article/details/124741454