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

RedPlayer是小红书基于FFmpeg4.3研发并开源的国产播放器,它可运行于Android和iOS系统,既支持播放本地视频文件,也支持播放网络上的流媒体链接。有关FFmpeg在Android平台的集成说明参见《FFmpeg开发实战:从零基础到短视频上线》一书的"第12章 FFmpeg的移动开发"。

之前的文章《使用国产的ijkplayer播放器观看网络视频》介绍了另一款由B站研发的国产播放器ijkplayer,可惜ijkplayer已经多年未更新源码,使得应用在App项目中颇为不便。如今小红书的RedPlayer横空出世,大有接过ijkplayer的势头,方便开发者定制包含最新特性的移动播放器。
这里以Android Studio Dolphin(小海豚版本)为例,介绍如何在App工程中运行RedPlayer,详细的操作步骤如下。

一、下载RedPlayer的源码

RedPlayer的源码托管地址为https://github.com/RTE-Dev/REDPlayer,国内的镜像网站有两个,一个是https://gitee.com/rte-dev/RedPlayer,另一个是https://gitcode.com/gh_mirrors/re/RedPlayer。

可以在托管网站上下载RedPlayer的最新源码,也可以下载2.0版本的源码。

二、导入RedPlayer的源码

解压下载后的RedPlayer源码,找到source目录,下面又有三个目录。分别是android、ios和redplayercore。其中android为RedPlayer适配Android系统的源码,ios为RedPlayer适配iOS系统的源码,redplayercore为RedPlayer的播放器核心源码,前两个源码都依赖于redplayercore。

打开小海豚版本的Android Studio后,按照项目方式导入上面解压得到的android目录,Android Studio就加载RedPlayer工程,并自动下载相关的依赖包。有关Android Studio导入App项目的操作步骤参见《Android Studio开发实战:从零基础到App上线(第3版)》一书的"1.3.2 导入已有的工程"。

成功导入RedPlayer工程之后,发现该工程有三个App模块,介绍如下:

app:这是包含交互界面的播放器演示模块,引用了小红书自研播放器相关库OpenRedPlayerCore和OpenRedPreload,支持播放本地视频文件、网络视频文件、在线直播链接,以及小红书提供的在线播放案例和画中画播放案例。

OpenRedPlayerCore:这是RedPlayer播放器的核心模块,其中的C/C++代码集成了FFmpeg、mediandk、SoundTouch等第三方库。

OpenRedPreload:这是播放器的预加载模块,主要提供网络视频流在下载过程中的缓存机制。

三、编译RedPlayer

依次选择Android Studio的顶部菜单:Build→Make Project,尝试编译RedPlayer工程。不料Android Studio提示报错"Could not find com.github.tbruyelle:rxpermissions:0.12",原来RedPlayer用到了第三方的rxpermissions。

不管怎么调整build.gradle配置,都无法下载权限库rxpermissions。可能rxpermissions许久未更新,被仓库除名了吧。只能删除build.gradle里的rxpermissions导包语句,同时去掉App工程中涉及到RxPermissions代码。

为了补偿rxpermissions的动态授权校验功能,需要开发者自行添加相关的运行时权限验证逻辑,具体代码参见《Android Studio开发实战:从零基础到App上线(第3版)》一书的"6.3.3 运行时动态申请权限"。

四、运行RedPlayer

解决了rxpermissions的导包问题之后,把RedPlayer安装到手机上,启动App的初始界面如下图所示:

点击首页列表的第一项"URL/JSON",在新页面填入一个网络视频地址,再点击右下角的Play按钮,跳到播放页面如下图所示。

可见RedPlayer能够正常播放网络视频。

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

相关推荐
杉氧13 小时前
深入理解 Compose 重组机制:快照系统如何驱动 UI 精准刷新?
android·架构·android jetpack
召钱熏14 小时前
状态枚举正确≠渲染正确:一个语音按钮的状态机边界修复实录
android·前端
杉氧14 小时前
深度解析:Jetpack Compose 核心架构与底层原理 —— 十年安卓老兵的“破茧重生”
android·架构·android jetpack
通玄15 小时前
Jetpack Compose 入门系列(七):ViewModel 与界面状态管理
android
落魄Android在线炒饭15 小时前
Android Framework 开发技巧:android.jar 生成与系统快速编译验证
android
如此风景15 小时前
Kotlin Flow操作符学习
android·kotlin
plainGeekDev16 小时前
GreenDAO → Room
android·java·kotlin
blanks202016 小时前
ffmpeg 学习笔记 通过命令行采集音频
ffmpeg
weiggle17 小时前
第八篇:ViewModel + Compose——生产级状态管理实践
android
RTC实战笔记19 小时前
实时互动数字人怎么做,才不是一个只会说话的视频?
音视频·数字人·rtc·数字人接入