![308ddc4181580b238f4446e0c681cc85.png](https://i-blog.csdnimg.cn/blog_migrate/817233e22889dce4c89cda67aaa32829.jpeg)
github源码位置:https://github.com/bilibili/ijkplayer (k0.8.8)
目录结构
IJKPlayer
----android(D) #Android平台相关的接口以及平台相关功能的封装
----config(D) #FFmpeg编译使用的配置文件,具体支持/禁用哪些格式及封装
----doc(D) #工程文档简要说明
----extra(D) #IJKPlayer编译底层依赖的三方库源码,ffmpeg,libyuv,openssl,soundtouch..
----ijkmedia(D) #IJK核心代码,或许详细介绍
----ijkprof(D) #
----ios(D) #iOS平台相关的接口以及平台相关功能的封装
----tools(D) #
对播放器的整体认知
引用自:https://www.zhihu.com/market/pub/119621305/manuscript/1122941825711001600
![00d593e3b4a1b2115357cc1e67305aa8.png](https://i-blog.csdnimg.cn/blog_migrate/285a7b540d319960f3f2e2d52d77a032.jpeg)
备注代码
IjkMediaPlayer.java ::AbstractMediaPlayer
initPlayer
1.加载本地so库
loadLibrariesOnce()
2.native初始化ijkplayer,ijkplayer_jni.c
native_init
native_setup
mp = ijkmp_android_create(message_loop)
jni_set_media_player(mp)
ijkmp_set_inject_opaque(mp)
ijkmp_set_ijkio_inject_opaque(mp)
ijkmp_android_set_mediacodec_select_callback()
ijkplayer_jni.c
ijkmp_android_set_surface(surface)
ijkmp_android_set_surface_l