四时宝库

程序员的知识宝库

IjkPlayer 源码框架介绍(iapp源码库)

一、结构说明

  1. 我们可以在GitHub下载或查看ijkplayer项目,地址是https://github.com/Bilibili/ijkplayer ,可看到其主要目录结构如下:

目录名称

说明

tool

初始化项目工程脚本

config

编译ffmpeg使用的配置文件

extra

存放编译ijkplayer所需的依赖源文件, 如ffmpeg、openssl等

ijkmedia

核心代码

ijkplayer

播放器数据下载及解码相关

ijksdl

音视频数据渲染相关

ios

iOS平台上的上层接口封装以及平台相关方法

android

Android平台上的上层接口封装以及平台相关方法

  1. 在android目录中我们看到的目录和说明

目录名称

说明

ijkplayer-arm64

arm64下编译出来的.so文件

ijkplayer-armv5

armv5编译出来的.so文件

ijkplayer-armv7a

armv7a编译出来的.so文件

ijkplayer-x86

x86编译出来的.so文件

ijkplayer-x86_64

x86_64编译出来的.so文件

ijkplayer-exo

google开源的一个新的播放器ExoPlayer,在Demo中和ijkplayer对比用的。通过安装ijkplayer可以发现setting里面可以选择不同player来渲染多媒体显示,该模块下面就是一个MediaPlayer

ijkplayer-java

ijkplayer的一些操作封装及定义。这里面是通用的API接口,里面最主要的是IMediaPlayer,它是用来渲染显示多媒体的

ijkplayer-example

ijkplayer官方提供的示例

二、特性列表

特性名称

说明

Android平台

支持API 9?23

CPU

ARMv7a,ARM64v8a,x86(ARMv5未在真实设备上测试)

API

API提供丰富的方法,易于集成

视频输出

NativeWindow,OpenGL ES 2.0

音频输出

AudioTrack,OpenSL ES

编解码器

MediaCodec(API 16+,Android 4.1+),支持硬件加速解码,更加省电

其他

可替代android.media.MediaPlayer,ExoPlayer

  1. 在功能的具体实现上,iOS和Android平台的差异主要表现在视频硬件解码以及音视频渲染方面,两者实现的载体区别如下表所示:

Platform

Hardware Codec

Video Render

Audio Output

iOS

VideoToolBox

OpenGL ES

AudioQueue

Android

MediaCodec

OpenGL ES、MediaCodec

OpenSL ES、AudioTrack

三、源码编译

https://www.toutiao.com/article/7323875544759271999/

四、启动及播放流程

https://mp.toutiao.com/profile_v4/graphic/preview?pgc_id=7416160474816987683

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接