ijkplayer之setSurface()/setDisplay()方法介绍(ijkplayer播放器简介二)

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

今天写一篇介绍ijkplayer播放器的文章,同时也作为自己学习ijkplayer的记录和总结。言归正传,ijkplayer可以说是当今移动端播放器界的新宠,简单的接口设计,跨平台支持(同时支持IOS和Android),而且还开源,支持二次开发,基于这些优点,ijkplayer深受广大移动端音视频开发工作者的喜爱。
setSurface()和setDisplay()是ijkplayer设置视频显示视图的接口,这两个接口的作用是一样的,只是参数不一样,根据具体需要调用就行了。其实,二者最终都会调用一个共同的native方法_setVideoSurface,下面是二者的定义:

    public void setDisplay(SurfaceHolder sh) {
        mSurfaceHolder = sh;
        Surface surface;
        if (sh != null) {
            surface = sh.getSurface();
        } else {
            surface = null;
        }
        _setVideoSurface(surface);//native方法
        updateSurfaceScreenOn();
    }

    public void setSurface(Surface surface) {
        if (mScreenOnWhilePlaying && surface != null) {
            DebugLog.e(TAG, "setScreenOnWhilePlaying(true) is ineffective for Surface");
        }
        mSurfaceHolder = null;
        _setVideoSurface(surface);//native方法
        updateSurfaceScreenOn();
    }

如果只播放音频媒体流,这两个接口是不需要调用的。其由上到下的调用流程如下图所示:

猜你喜欢

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