编译

快速入门:

ijkplayer是Bilibili发布的轻量级 Android/iOS 开源视频播放器。核心代码主要是用C写的,主要由ffmpeg(解码)+openssl(https)+播放器相关组成。编译可裁剪,支持直播、点播(在线播放)、硬件加速解码、弹幕等,完整版支持格式较多,包括且不限于mp4、avi、asf、dat、f4v、flv、mkv、mov、mpg、rmvb、ts、vob、webm、wmv等视频封装格式

  • 快速集成

在Android Studio中加如下依赖即可:

# required
allprojects {repositories {jcenter()}
}dependencies {# required, enough for most devices.// 必须:足以适应大多数设备compile 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8'compile 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.8'# Other ABIs: optional// 可选:其他架构compile 'tv.danmaku.ijk.media:ijkplayer-armv5:0.8.8'compile 'tv.danmaku.ijk.media:ijkplayer-arm64:0.8.8'compile 'tv.danmaku.ijk.media:ijkplayer-x86:0.8.8'compile 'tv.danmaku.ijk.media:ijkplayer-x86_64:0.8.8'# ExoPlayer as IMediaPlayer: optional, experimental
// 实验性功能:对ExoPlayer的封装,封装成功IMediaPlayercompile 'tv.danmaku.ijk.media:ijkplayer-exo:0.8.8'
}

使用默认的支持的格式相对较少,测试后大概有mp4、flv、f4v和mkv(0.8.8支持),如果要更多格式需要自己下载源码在Ubuntu中编译。

编译ijkplayer

  • 所需环境
    系统:Ubuntu 18.04.1 LTS(虚拟机推荐使用VirtualBox)
    NDK:android-ndk-r13b-linux-x86_64(ijkplayer仅支持r10e以上r14b及以下的NDK版本)
    项目:ijkplayer k0.8.8
  • 安装Ubuntu
    (略)
  • 安装组件
$ sudo apt-get install vim openssh-server git curl wget tar unzip build-essential openjdk-8-jdk yasm python
// 用bash代替dash (不一定需要),弹出窗口选择NO
$ sudo dpkg-reconfigure dash
  • 配置环境变量

在开始编译之前需要先配置ANDROID_NDK环境变量。
下载NDK后解压到/opt/Android/目录下

$ sudo unzip android-ndk_r13b-linux-x86_64.zip
$ sudo mv android-ndk-r13b /opt/Android/    //提前手动创建好Android目录

添加环境变量到profile

$ sudo vim /etc/profile

在文件末尾添加如下内容

export ANDROID_NDK=/opt/Android/android-ndk-r13b
export PATH=$PATH:$ANDROID_NDK

完成后重启Ubuntu或者在终端中source一下profile

$ source /etc/profile
  • 克隆ijkplayer代码
$ git clone https://github.com/Bilibili/ijkplayer ijkplayer-android
  • 编译配置

ijkplayer有三种编译配置
1)支持较多格式(完全编译,几乎所有格式都支持了),文件较大

$ cd config
$ rm module.sh
$ ln -s module-default.sh module.sh

2)支持较少格式,包含hevc

$ cd config
$ rm module.sh
$ ln -s module-lite-hevc.sh module.sh

3)支持较少格式(默认)

$ cd config
$ rm module.sh
$ ln -s module-lite.sh module.sh
  • 下载源码

开源项目中并没有直接包含ffmpeg和openssl源码,所以编译前需要先下载

// 进入工程根目录
$ cd ijkplayer-android
// checkout ffmpeg 源码,ffmpeg有300多M,下载可能会有点慢
$ ./init-android.sh
// checkout openssl android源码
$ ./init-android-openssl.sh
  • 编译
// 编译openssl(用于支持https)
$ cd android/contrib
$ ./compile-openssl.sh clean
$ ./compile-openssl.sh all
// 编译 ffmpeg
$ ./compile-ffmpeg.sh clean
$ ./compile-ffmpeg.sh all
// 编译ijkplayer
$ cd ..
$ ./compile-ijk.sh all

如果在编译ffmpeg时有报:fatal error: linux/perf_event.h: No such file or directory错误,那么在ijkplayer-android/config/module.sh的末尾添加

export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-linux-perf"

再重新编译即可

ijkplayer的使用

ijkplayer-android/android/ijkplayer目录是一个 Android Studio 工程,经过编译后即是一个完整的工程,可以直接拷贝出来用Android Studio打开使用。
ijkplayer-example:示例
ijkplayer-java:java层的库(必须的)
ijkplayer-xxx:各种架构的so库
ijkplayer-exo:对ExoPlayer的封装

  1. 引入.so文件:这里用的是源码编译后,导入so文件的方式,把相应的so文件放在自己工程的libs文件夹中。

在app的build.gradle添加

   sourceSets {main {jniLibs.srcDir 'libs'}}

2.把ijkplayer-java项目作为module引入项目

并在app的build.gradle中引入

implementation project(path: ':ijkplayer-java')

或者不引入module只需要依赖对应版本的java层的库即可,这里是k0.8.8

 implementation 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8'

至此便完成了ijkplayer的编译和引入。

开源播放器ijkplayer的使用相关推荐

  1. 开源播放器 ijkplayer (一) :使用Ijkplayer播放直播视频

    1.ijkplayer 编码 IjkPlayer支持硬解码和软解码. 软解码时不会旋转视频角度这时需要你通过onInfo的what == IMediaPlayer.MEDIA_INFO_VIDEO_R ...

  2. 开源播放器 ijkplayer (四) :Ijkplayer切换网络时停止播放的问题处理

    问题起因: 在进行ijkplayer播放器的测试时,发现ijkplayer播放器在切换网络时出现直播画面停止的问题. 问题分析: 抓取日志发现:tv.danmaku.ijk.media.player. ...

  3. LZH_IJKPlayer-一个最简单使用的视频播放器,集成于bilibili开源直播播放器(ijkplayer)

    随着视频直播APP的迅速发展,许多APP也都会加入直播的功能,提高用户量.在网上也是寻找了许多直播的播放器,无意间发现Bilibili开源了一款播放器ijkplayer,想从最开始的步骤集成的同学可以 ...

  4. 几款好用播放器ijkplayer、vlc、SmartPlayer、ExoPlayer

    ijkPlayer ijkPlayer是BiliBili公司维护的一个开源工程,基于ffmpeg开发的一个播放器软件,支持Android和iOS平台,整个ijkplayer就是以ffplay为基础,如 ...

  5. 开源视频播放器IjkPlayer使用记录之一--demo的使用及View的简要介绍

    1.初识Ijkplayer Android系统提供的MediaPlayer支持的编码格式有限,这里推荐一款开源的媒体播放器Ijkplayer. ijkplayer 是一个基于 ffplay 的轻量级 ...

  6. 开源播放器 Banshee 发布 1.0 beta 2

    Banshee也是个很是不错的开源播放器,同时也是SuSE的内置播放器,默许支持靠山播放,消息区域告诉,可以快速跳过以后曲目,评分等等,也支持全局热键,媒体库支持音频和视频. 新版本提供了对网络视频和 ...

  7. 搭建rtmp直播流服务之4:videojs和ckPlayer开源播放器二次开发(播放rtmp、hls直播流及普通视频)...

    前面几章讲解了使用 nginx-rtmp搭建直播流媒体服务器; ffmpeg推流到nginx-rtmp服务器; java通过命令行调用ffmpeg实现推流服务; 从数据源获取,到使用ffmpeg推流, ...

  8. qq浏览器开源播放器_使用极简的开源Web浏览器Min浏览网络

    qq浏览器开源播放器 世界是否需要其他Web浏览器? 尽管拥有多种浏览器供选择的日子已经一去不复返了,但是仍然有很多人在开发可以帮助我们使用Web的新应用程序. Min是这些新型浏览器之一. 顾名思义 ...

  9. Mark几款优秀的基于MPC开源播放器的源码供参考.

    SEP 11TH, 2016 2:00 PM MPC(Media Player Classic)是一款基于DirectShow由一名匈牙利大佬Gabest开发的一款开源播放器. 由于该项目基于GPL源 ...

最新文章

  1. linux软件安装不完全傻瓜手册
  2. 30天敏捷生活(5):形成个人价值观
  3. $_FILES error(笔记)
  4. Python-使用PyQT生成图形界面
  5. 使用Silverlight Toolkit绘制图表(上)--柱状图
  6. 一个简单的高并发的回应服务器(5万并发)
  7. python中的私有化
  8. IIS7的FTP出错: 451 No mapping for the unicode character exists in the target multi-byte code page
  9. 计算机中 位数越多 能表示的状态,第2章 基本数据的表示与处理.ppt
  10. easyexcel导出excel文件之图片导出
  11. aliez歌词_【aLIEz】附平假名歌词(完整)
  12. python PIL图片转PDF
  13. 如何使用MATLAB绘制平滑曲线
  14. Android屏幕渲染
  15. autojs教程:贝壳赚app脚本代码
  16. SwiftUI——全局背景渐变色(Gradient)案例
  17. excel制作文件夹侧标签
  18. 使用DOS重定位技术执行isqlw(SQL查询分析器)
  19. 【SQL】利用sql语句在mysql的表中插入date类型的数据,
  20. AirSim学习(1)-介绍,安装,unity测试

热门文章

  1. 阮一峰 php程序员进阶,阮一峰:Git 使用规范流程
  2. 阮一峰博客里面css3的display:flex的布局
  3. java批量处理数据_Java批量处理数据
  4. Principle for Mac 6.12 中文版 优秀的交互原型设计工具
  5. 17.17. 多次搜索
  6. java smb协议 smbj和jcifs比较
  7. 数码管的原理及静态显示
  8. Hive UDF GDF UDTF编写与实现
  9. 万全高性能服务器是产品还是商品,联想万全R515服务器产品简介.doc
  10. 前端小圆点应该怎么写好看