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开发实战:从零基础到短视频上线》一书。
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频的更多相关文章
- FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台
FFmpeg和SDL开发专栏(点击传送门) 上一篇:<FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放>下一篇:敬请期待 前言 将ffmpeg移植到海思H ...
- Hi3516开发笔记(十):Qt从VPSS中获取通道图像数据存储为jpg文件
前言 上一篇已经将himpp套入qt的基础上进行开发.那么qt中拿到frame则是很关键的交互,这是qt与海思可能编解码交叉开发的关键步骤. 受限制 因为直接配置sample的vi比较麻烦 ...
- FFmpeg开发笔记(四):ffmpeg解码的基本流程详解
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- FFmpeg开发笔记(五):ffmpeg解码的基本流程详解(ffmpeg3新解码api)
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放
前言 ffmpeg播放rtsp网络流和摄像头流. Demo 使用ffmpeg播放局域网rtsp1080p海康摄像头:延迟0.2s,存在马赛克 使用ffmpeg播放网络rtsp文件流 ...
- FFmpeg开发笔记(三):ffmpeg介绍、windows编译以及开发环境搭建
前言 本篇章是对之前windows环境的补充,之前windows的是无需进行编译的,此篇使用源码进行编译,版本就使用3.4.8. FFmpeg简介 FFmpeg是领先的多媒体框架,能够解码 ...
- Django开发笔记六
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.登录功能完善 登录成功应该是重定向到首页,而不是转发 ...
- 树莓派开发笔记(十四):入手研华ADVANTECH工控树莓派UNO-220套件(三):使用研发自带系统测试rtc、gpio、232和485套件接口
前言 上一篇说明了必须要使用研华自带的8G卡的系统,通过沟通拿到了相关的系统,购买的时候会带8GB的卡,请自行备份一份镜像.本篇对uno-220套件的相关研华配套的额外接口做测试,篇幅较长,重点讲 ...
- Go笔记之二:一个完整的播放器示例
Go笔记之二:一个完整的播放器示例 该示例从命令行运行一个播放器示例,可进行添加.删除.浏览和模拟播放,其内容是对 Go 语言接口使用的良好展示 源码及可执行文件 参考书籍<Go语言编程> ...
- java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)
java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...
随机推荐
- java多线程之sleep 与 yield 区别
1.背景 面试中经常会被问到: sleep 与 yield 区别 2.代码 直接看代码吧! package com.ldp.demo01; import com.common.MyThreadUtil ...
- 为何AI更懂你:向量搜索,了解一下!
现在,你有没有发现自己越来越多地依赖推荐系统,有时候自己搜到的结果好像还没有AI推荐的精准. 那估计有人好奇了,推荐系统怎么这么"聪明"的呢?答案就是:"向量搜索&quo ...
- 在VS Code中使用Snippet Craft扩展提高编码效率
Snippet Craft 一个VS Code代码片段管理插件 功能 创建和插入代码片段 在编辑器区域右键菜单中点击插入Snippet,或在代码片段视图中点击条目,则会将代码片段插入到当前激活文档的光 ...
- Drools决策表实践运用
Drools 决策表的使用与说明 Drools决策表的使用 官方文档决策表说明 决策表使用方式 执行drl代码及结果 Drools决策表的使用 官方文档决策表说明 Drools 决策表的使用 16.7 ...
- 从cmake解决clion编译生成的可执行文件(.exe)不可执行的问题
我这里没有显示报错,是直接闪退的情况,但是网上搜索的时候大多数是有报错弹窗的,运行报错提示为无法链接动态库.如下图: ![原图来自CSDN@LJY_kt11 一句话说清楚 原因是使用CLion编译的程 ...
- 【YashanDB知识库】数据库审计shutdown immediate操作导致数据库异常退出
[问题分类]功能使用 [关键字]数据库审计,shutdown immediate [问题描述]审计shutdown immediate 操作,数据库作主从切换时会导致数据库异常退出. [问题原因分析] ...
- 5.7前端跨域CSRF和SSRF
一.CSRF(跨站请求伪造) 1.get类型(pikaqu靶场环境) 前提:抓包获取请求地址,构造伪造请求站点,并保持用户登录状态点击伪造站点 此时在其他主机,构造网站信息index.html文件,并 ...
- AI 视觉的应用|ZegoAvatar ⾯部表情随动技术解析
一.AI"卷"进实时互动 2021年,元宇宙概念席卷全球,国内各大厂加速赛道布局,通过元宇宙为不同的应用场景的相关内容生态进行赋能.针对"身份"." ...
- 全面升级,票据识别新纪元:合合信息TextIn多票识别2.0
票据识别 - 自动化业务的守门员 发票.票据识别,是OCR技术和RPA.CMS系统结合的一个典型场景,从覆盖率.覆盖面的角度来说,应该也是结合得最成功的场景之一. 旧瓶装新酒,已经成熟的产品何苦费 ...
- 使用 Nuxt Kit 检查模块与 Nuxt 版本兼容性
title: 使用 Nuxt Kit 检查模块与 Nuxt 版本兼容性 date: 2024/9/13 updated: 2024/9/13 author: cmdragon excerpt: 通过 ...