ijkplayer之prepareAsync()方法介绍(ijkplayer播放器简介三)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liuzehn/article/details/88999179

今天写一篇介绍ijkplayer播放器的文章,同时也作为自己学习ijkplayer的记录和总结。言归正传,ijkplayer可以说是当今移动端播放器界的新宠,简单的接口设计,跨平台支持(同时支持IOS和Android),而且还开源,支持二次开发,基于这些优点,ijkplayer深受广大移动端音视频开发工作者的喜爱。
prepareAsync()是ijkplayer播放前的准备函数,只有执行这个函数之后,才能执行后续的play,pause,seek,stop等操作。这个方法具体做了那些工作,请看下图:

prepareAsync()

 prepareAsync()的定义如下,直接调用了native方法_prepareAsync()。

    @Override
    public void prepareAsync() throws IllegalStateException {
        _prepareAsync();
    }

_prepareAsync()实际对应IjkMediaPlayer_prepareAsync()方法,主要是在为播放音视频做准备工作,具体实现如下:

static void
IjkMediaPlayer_prepareAsync(JNIEnv *env, jobject thiz)
{
    MPTRACE("%s\n", __func__);
    int retval = 0;
    IjkMediaPlayer *mp = jni_get_media_player(env, thiz);
    JNI_CHECK_GOTO(mp, env, "java/lang/IllegalStateException", "mpjni: prepareAsync: null mp", LABEL_RETURN);

    retval = ijkmp_prepare_async(mp);
    IJK_CHECK_MPRET_GOTO(retval, env, LABEL_RETURN);

LABEL_RETURN:
    ijkmp_dec_ref_p(&mp);
}

猜你喜欢

转载自blog.csdn.net/liuzehn/article/details/88999179