FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频

ijkplayer是Bilibili公司(简称B站)基于FFmpeg3.4研发并开源的国产播放器,它可运行于Android和iOS系统,既支持播放本地视频文件,也支持播放网络上的流媒体链接。

之前的文章《Linux编译ijkplayer的Android平台so库》介绍了如何编译获得App工程所需ijkplayer的so文件,接下来还要把官方的案例工程导入到新版的Android Studio,才能开展后续的App调试和开发工作。
这里以Android Studio Dolphin(小海豚版本)为例,介绍如何在App工程中导入并使用ijkplayer库,详细的操作步骤如下。

一、修改案例工程的Gradle版本

打开案例工程的gradle/wrapper/gradle-wrapper.properties,把下面这行配置

复制代码
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip

改为下面这行配置

复制代码
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-bin.zip

也就是把Gradle版本版本从2.14.1升级到5.4.1。

二、修改项目级别的build.gradle

打开项目级别的build.gradle,依次完成以下三处修改。

1、把下面这行jcenter配置

复制代码
jcenter()

替换为下列的仓库配置

复制代码
gradlePluginPortal()
google()
mavenCentral()
// 以下四行添加阿里云的仓库地址,方便国内开发者下载相关插件
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'https://maven.aliyun.com/repository/google'}
maven { url 'https://maven.aliyun.com/repository/gradle-plugin'}
maven { url 'https://maven.aliyun.com/repository/public'}
maven { url 'https://jitpack.io' }

2、把下面几行的Gradle版本信息

复制代码
classpath 'com.android.tools.build:gradle:2.1.3'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7'

替换为下面的Gradle版本信息

复制代码
classpath 'com.android.tools.build:gradle:3.2.0'

3、把下面几行的SDK版本信息

复制代码
compileSdkVersion = 25
buildToolsVersion = "25.0.3"
targetSdkVersion = 25

替换为下面的SDK版本信息

复制代码
compileSdkVersion = 28
buildToolsVersion = "28.0.3"
targetSdkVersion = 28

三、修改模块级别的build.gradle

打开各模块的build.gradle,依次完成以下三处修改。

1、把各模块build.gradle里面所有的compile替换为implementation

2、把各模块build.gradle里面所有的"minSdkVersion 9"替换为"minSdkVersion 21"

3、单独打开ijkplayer-example模块的build.gradle,先把productFlavors和几行all32Compile与all64Compile统统注释掉,再把下面的导包配置

复制代码
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:preference-v7:23.0.1'
compile 'com.android.support:support-annotations:23.0.1'

替换为下面的导包配置,也就是把support库升级到28.0.0版本。

复制代码
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:preference-v7:28.0.0'
implementation 'com.android.support:support-annotations:28.0.0'

四、导入编译好的so文件

把根据《Linux编译ijkplayer的Android平台so库》编译出来的三个so文件放到ijkplayer-example模块的src/main/jniLibs/arm64-v8a目录下,这样Android Studio会在编译时自动加载这里的so文件。

五、添加直播链接的播放代码

打开ijkplayer-example模块的FileExplorerActivity.java,在onCreate方法末尾补充下面的播放代码。

复制代码
final  Context context = this;
FrameLayout fr_body = findViewById(R.id.body);
LinearLayout ll_body = new LinearLayout(context);
ll_body.setOrientation(LinearLayout.VERTICAL);
fr_body.addView(ll_body);
final EditText et_url = new EditText(context);
et_url.setText("http://124.70.xxx.xxx:8080/live/test/hls.m3u8");
ll_body.addView(et_url);
Button btn_go = new Button(context);
btn_go.setText("开始播放");
btn_go.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        VideoActivity.intentTo(context, et_url.getText().toString(), "测试视频");
    }
});
ll_body.addView(btn_go);

以上五个步骤的修改之后,编译运行ijkplayer-example模块的App工程,在真机上看到的ijkplayer播放界面如下图所示。

可见通过ijkplayer成功在案例App上观看网络直播地址。

更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。

相关推荐
八月林城36 分钟前
echarts在uniapp中使用安卓真机运行时无法显示的问题
android·uni-app·echarts
雨白1 小时前
搞懂 Fragment 的生命周期
android
casual_clover1 小时前
Android 之 kotlin语言学习笔记三(Kotlin-Java 互操作)
android·java·kotlin
梓仁沐白1 小时前
【Kotlin】数字&字符串&数组&集合
android·开发语言·kotlin
技术小甜甜1 小时前
【Godot】如何导出 Release 版本的安卓项目
android·游戏引擎·godot
火柴就是我1 小时前
Dart 原始字符串(Raw Strings)详解文档
android
玲小珑2 小时前
Auto.js 入门指南(五)实战项目——自动脚本
android·前端
玲小珑2 小时前
Auto.js 入门指南(四)Auto.js 基础概念
android·前端
没有了遇见3 小时前
DrawerLayout 滑动冲突
android
玲小珑4 小时前
Auto.js 入门指南(六)多线程与异步操作
android·前端