文档首页 > > 播放器SDK> Android播放器> 接口参考

接口参考

分享
更新时间:2020/05/25 GMT+08:00

IjkMediaPlayer类

IjkMediaPlayer主要包含播放相关的方法。

方法

描述

public void setDataSource(String path, Map<String, String> headers);

public void setDataSource(Context context, Uri uri)

public void setDataSource(Context context, Uri uri, Map<String, String> headers)

public void setDataSource(String path)

public void setDataSource(FileDescriptor fd)

private void setDataSource(FileDescriptor fd, long offset, long length)

public void setDataSource(IMediaDataSource mediaDataSource)

【功能说明】

打开播放器写本地文件日志功能。

【请求参数】

  • path:文件的路径,或您要播放的流的http/rtsp URL。
  • headers:播放的流的http请求关联的标头。
  • context:解析URI时使用的Context。
  • uri:要播放的数据的内容URI。
  • fd:要播放的FileDescriptor文件。
  • mediaDataSource:要播放的IMediaDataSource文件。

【返回参数】

【注意事项】

public boolean isPlaying()

【功能说明】

判断当前是否处于播放状态。

【请求参数】

【返回参数】

boolean型数据:是否处于播放状态。

【注意事项】

public seekTo(long time)

【功能说明】

拖拽播放。

【请求参数】

time:拖拽位置。

【返回参数】

【注意事项】

public long getTcpSpeed()

【功能说明】

获取下载速度。

【请求参数】

time:拖拽位置。

【返回参数】

long型数据:下载速度。

【注意事项】

public void setSpeed(float speed)

【功能说明】

设置播放速度。

【请求参数】

speed:变速设置。

取值范围:0.5f-2.0f。

【返回参数】

【注意事项】

public float getSpeed()

【功能说明】

获取播放速度。

【请求参数】

【返回参数】

float型数据:获取变速参数。

【注意事项】

setOption

具体请参见表1

表1 setOption参数说明

分类

参数

描述

示例

OPT_CATEGORY_PLAYER

an

是否输出音频。

mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER,"an",1)

OPT_CATEGORY_PLAYER

vn

是否输出视频。

mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER,"vn",1)

OPT_CATEGORY_PLAYER

nodisp

是否禁止图像显示,只输出音频。

mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER,"nodisp",1)

OPT_CATEGORY_PLAYER

flush_packets

每处理一个packet之后刷新io上下文。

mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER,"flush_packets",1)

OPT_CATEGORY_PLAYER

isModifyTone

设置是否开启变调。

  • 0:开启
  • 1:不开启

mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER,"soundtouch",isModifyTone?0:1)

OPT_CATEGORY_CODEC

skip_loop_filter

设置是否开启环路过滤。

  • 0:开启,画面质量高,解码开销大。
  • 48:关闭,画面质量差点,解码开销小。

mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_CODEC,"skip_loop_filter",0)

OPT_CATEGORY_FORMAT

analyzemaxduration

设置播放前的最大探测时间。

mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT,"analyzemaxduration",100L)

OPT_CATEGORY_FORMAT

analyzeduration

设置播放前的探测时间。

设置为1,达到首屏秒开效果。

mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT,"analyzeduration",1)

OPT_CATEGORY_FORMAT

probesize

播放前的探测Size,默认是设置值小一点播出画面会更快。

mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT,"probesize",1024*10)

OPT_CATEGORY_FORMAT

flush_packets

每处理一个packet之后刷新io上下文。

mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT,"flush_packets",1L)

OPT_CATEGORY_PLAYER

packet-buffering

是否开启预缓冲,一般直播项目会开启,达到秒开的效果,但会导致播放丢帧卡顿。

mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER,"packet-buffering",isBufferCache?1:0)

OPT_CATEGORY_PLAYER

reconnect

播放重连次数。

mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER,"reconnect",5)

OPT_CATEGORY_PLAYER

max-buffer-size

最大缓冲大小。

单位:kb。

mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER,"max-buffer-size",maxCacheSize);

OPT_CATEGORY_PLAYER

framedrop

跳帧处理。

CPU处理视频较慢时,进行跳帧处理,保证画面和声音同步。

mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER,"framedrop",5)

OPT_CATEGORY_PLAYER

max-fps

最大fps。

mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER,"max-fps",30)

OPT_CATEGORY_PLAYER

mediacodec

设置硬解码方式。

jkPlayer支持硬解码和软解码。

mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 1)

OPT_CATEGORY_PLAYER

mediacodec-auto-rotate

软解码时不会旋转视频角度,需要通过设置onInfo的what == IMediaPlayer.MEDIA_INFO_VIDEO_ROTATION_CHANGED获取角度,进行画面旋转。

mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-auto-rotate", 1)

OPT_CATEGORY_PLAYER

mediacodec-handle-resolution-change

是否自动处理分辨率更改。

mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec-handle-resolution-change", 1)

OPT_CATEGORY_PLAYER

enable-accurate-seek

SeekTo设置优化。

因为原始的视频文件中i帧较少,而seek只支持关键帧,导致视频在SeekTo的时候,会跳回到拖动前的位置。

mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "enable-accurate-seek", 1)

OPT_CATEGORY_FORMAT

fflags

解决m3u8文件拖动问题。

如播放时长为3小时左右的音频文件,从开始播放几秒拖动到2小时左右时,要loading 10分钟。

mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "fflags", "fastseek")

OPT_CATEGORY_PLAYER

enable-accurate-seek

设置之后,高码率m3u8的播放出现卡顿,声音画面不同步,或者只有画面,没有声音,或者声音画面不同步。

mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "enable-accurate-seek", 1)

OPT_CATEGORY_FORMAT

probesize

播放前的探测Size,默认是1M,设置数值小于1M画面播放速度更快。

mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "probesize", 1024 * 10)

监听器接口

播放器的各状态都是通过客户端注册监听,播放器以响应监听的方式来上报的。客户端的监听响应函数需要继承播放器的监听器接口,并编写接口方法实现。

客户端需要在监听响应时,通过播放器的状态和上报的参数并根据APP设计的需要来决定后续如何处理。以下是对播放器各监听器接口的说明。

表2 监听器函数以及参数说明

接口名

描述

public void onPrepared(IMediaPlayer iMediaPlayer)

播放器准备好播放。可以在该接口的回调函数调用播放器的start方法。

public void onVideoSizeChanged(IMediaPlayer iMediaPlayer, int i, int i1, int i2, int i3)

视频宽高值变化监听。客户端可以在该监听接口的回调函数获取片源的宽和高。

public void onCompletion(IMediaPlayer iMediaPlayer)

播放完成。客户端可以在该监听接口的回调函数进行播放完成的操作。

public boolean onError(IMediaPlayer iMediaPlayer, int framework_err, int impl_err)

错误上报,错误码信息,具体请参考表3。客户端可以在该监听接口的回调函数对播放器遇到的错误进行相应操作。

public boolean onInfo(IMediaPlayer iMediaPlayer, int what, int extra)

消息上报,具体请参见表4。客户端可以在该监听接口的回调函数对播放器上报的报警等其他信息进行相应处理。

public void onBufferingUpdate(IMediaPlayer iMediaPlayer, int percent)

缓冲更新。客户端可以在该监听接口的回调函数获取缓冲完成的百分比。

public void setOnSeekCompleteListener(IMediaPlayer iMediaPlayer)

拖拽完成监听。客户端可以在该监听接口的回调函数获取缓冲完成的百分比。

public void onTimedText(IMediaPlayer iMediaPlayer, IjkTimedText ijkTimedText)

字幕监听接口。

表3 media_error_type枚举

枚举成员

描述

MEDIA_ERROR_UNKOWN

1,未指明的错误类型

int MEDIA_ERROR_SERVER_DIED

100,媒体服务关闭或异常退出,视频中断,通常情况是视频源异常或者不支持的视频类型。

MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK

200,数据错误没有有效的回收。

MEDIA_ERROR_IO

-1004,IO错误。

MEDIA_ERROR_MALFORMED

-1007,比特流不符合编码标准或者文件规格

MEDIA_ERROR_UNSUPPORTED

-1010,比特流符合编码标准或者文件规格,但是媒体框架不支持

MEDIA_ERROR_TIMED_OUT

-110,数据超时Error (-10000,0)。

MEDIA_INFO_VIDEO_INTERRUPT

-10000,数据连接中断,通常情况是视频源存在问题或者数据格式不支持,比如音频不是AAC。

表4 media_info_type枚举

枚举成员

描述

MEDIA_INFO_UNKNOWN

1,未知信息。

MEDIA_INFO_STARTED_AS_NEXT

2,播放下一条。

MEDIA_INFO_VIDEO_RENDERING_START

3,视频开始准备中,准备渲染。

MEDIA_INFO_VIDEO_TRACK_LAGGING

700,视频日志跟踪。

MEDIA_INFO_BUFFERING_START

701,开始缓冲中,开始缓冲。

MEDIA_INFO_BUFFERING_END

702,缓冲结束。

MEDIA_INFO_NETWORK_BANDWIDTH

703,网络带宽,网速方面。

MEDIA_INFO_BAD_INTERLEAVING

800,音视频错乱传输,视频跟音频不同步。

MEDIA_INFO_NOT_SEEKABLE

801,直播,不可设置播放位置。

MEDIA_INFO_METADATA_UPDATE

802,一系列新的metedata可被使用

MEDIA_INFO_TIMED_TEXT_ERROR

900,媒体信息计时文本错误

MEDIA_INFO_UNSUPPORTED_SUBTITLE

901,不支持字幕。

MEDIA_INFO_SUBTITLE_TIMED_OUT

902,字幕超时。

MEDIA_INFO_VIDEO_ROTATION_CHANGED

10001,视频方向改变,视频选择信息。

MEDIA_INFO_AUDIO_RENDERING_START

10002,音频开始准备中。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问