[IJKPLAYER]编译与DEMO运行

前言

系统:UBUNTU 16.04桌面版
编译步骤,主要还是参考README.md中Build Android的描述

Android/iOS video player based on FFmpeg n3.2, with MediaCodec, VideoToolbox support.
优势:
基于 FFmpeg,表明几乎支持任何的协议
基于MediaCodec, VideoToolbox,表明支持硬件解码

IJKPLAYER 项目地址

1.下载软件

android NDK

2.软件安装

2.1.安装OPENJDK

sudo apt-get install openjdk-8-jre-headless

2.2.SDK安装

SDK
解压下载好的SDK压缩包,执行tools/android脚本启动android sdk manager下载最新的Android SDK Tools和Android SDK Platform-tools和Android SDK Build-tools

2.3.配置环境

打开文件/etc/profile,在文件末尾加入以下内容:

export ANDROID_SDK=/home/sugao/Android/Sdk
export ANDROID_NDK=/home/sugao/Android/Ndk-r14b
export PATH=${ANDROID_SDK}/platform-tools:$PATH
export PATH=${ANDROID_SDK}/tools:$PATH
export PATH=${ANDROID_NDK}:$PATH 

2.5.环境生效

source /etc/profile

2.6.环境检测

adb -version 

2.7.安装其他软件

sudo apt-get update
sudo apt-get install git
sudo apt-get install yasm

3.下载ijkplayer

git clone https://github.com/Bilibili/ijkplayer.git ijkplayer

4.编译

./init-android.sh

4.1.编译openssl

cd android/contrib
./compile-openssl.sh clean
./compile-openssl.sh all

4.2.编译ffmpeg

cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
注意:FFMPEG的配置文件在config/module.sh

4.3.编译ijkplayer native代码

cd ..
./compile-ijk.sh all

4.4.库文件

在android/ijkplayer/ijkplayer-xxxx/src/main/libs/armeabi-v7a目录中有对应的库文件(libijkffmpeg.so,libijkplayer.so,libijksdl.so)。
全平台库文件下载链接

5.运行DEMO

1.导入DEMO
点击ANDROID-STUDIO中的File->New->Improt Project导入android/ijkplayer
根据ANDROID-STUDIO的版本,修改build.gradle中ext配置

ext {
    compileSdkVersion = 23       // depending on your sdk version
    buildToolsVersion = "23.0.0" // depending on your build tools version
    targetSdkVersion = 23        // depending on your sdk version
}

目录格式
2.运行DEMO
DEMO程序APK下载链接
主页图片
SAMPLE

设置1
设置2
播放界面

6.整体评测

6.1.DEMO评测

  • DEMO首页界面:已包含本地文件浏览和播放,sample列表和播放以及设置界面,功能已相当丰富;
  • DEMO播放界面:包括Player(使用的播放器:AndroidMediaPlayer,IjkMediaPlayer),Render(图像渲染:none,SurfaceView,TextureView),Scale(比例:16:9,4:3,aspect),Info(流信息)和Tracks(音视频轨道,且可选择播放那些轨道) ,并且具有
  • DEMO普通设置:是否使能后台播放,设置播放引擎(AndroidMediaPlayer,IjkMediaPlayer,IjkExoMediaPlayer)
  • DEMO视频设置:是否使用MediaCodec编解码,是否使用MediaCodec的自动旋转,是否使用MediaCodec处理分辨率变化,像素格式
  • DEMO音频设置:是否使用OpenSL ES接口
  • DEMO渲染设置:略
  • DEMO麦克风设置:是否使用MediaDataSource接口;

6.2.性能评测

标清播放问题不大,但高清可能出现音视频不同步;
TS流播放加载时间太长,切台效果不佳;

7.错误整理

7.1.ADV启动错误

错误信息:

下午3:08	Executing tasks: [:ijkplayer-example:assembleAll32Debug]
下午3:08	Emulator: libGL error: unable to load driver: nouveau_dri.so
下午3:08	Emulator: libGL error: driver pointer missing
下午3:08	Emulator: libGL error: failed to load driver: nouveau
下午3:08	Emulator: libGL error: unable to load driver: swrast_dri.so
下午3:08	Emulator: libGL error: failed to load driver: swrast
下午3:08	Emulator: X Error of failed request:  BadValue (integer parameter out of range for operation)
下午3:08	Emulator: Major opcode of failed request:  155 (GLX)
下午3:08	Emulator: Minor opcode of failed request:  24 (X_GLXCreateNewContext)
下午3:08	Emulator: Value in failed request:  0x0
下午3:08	Emulator: Serial number of failed request:  33
下午3:08	Emulator: Current serial number in output stream:  34
下午3:08	Emulator: Process finished with exit code 1

解决办法:
使用sudo apt list "*nvidia-[0-9][0-9][0-9]"获取NVIDIA显卡驱动版本,然后安装相应驱动(sudo apt install nvidia-375),重启电脑即可

发布了91 篇原创文章 · 获赞 28 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/weixin_35804181/article/details/77427700