Android 播放器

Android 播放器渲染一帧图像

2017-07-01  本文已影响238人  TinyTina

本文想要介绍ijkplayer 软硬解下是如何渲染一帧图像到屏幕上。


先简单的介绍一下MediaCodec API,不过 需要好好研究学习一番,它涉及解码播放的方方面面。下面的2个图能给我们清晰的认识。


MediaCodec 在API level 16 configure Surface 后解码播放的过程中运用的MediaCodec 接口
数据输入接口:

获取解码后的数据:

视频渲染:


ijkplayer 音视频渲染引擎是在ijksdl库实现的,它包含的东西较多:

备注1:ijkyuv库其实是 libyuv 用于各种YUV/RGB格式直接转换。远比FFmpeg 中的 libswscale 提供的效率高。
备注2:MediaCodecDummy 虚拟硬件解码器在Android 播放器音视频同步机制 说明。


硬解渲染过程


软解

1、ANativeWindow Copy机制
备注:ANativeWindow 也可以直接支持YUV(HAL_PIXEL_FORMAT_YV12)格式的copy 的。渲染线程调用SDL_Android_NativeWindow_display_l 渲染步骤:

2、OpenGL ES
渲染线程调用 IJK_EGL_display

备注:OpenGL ES shader 实现了yuv 到rgb 转换 效率更高

上一篇 下一篇

猜你喜欢

热点阅读