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开发实战:从零基础到短视频上线》一书。

相关推荐
正在走向自律1 分钟前
智能体时代:字节跳动Coze平台应用开发完全指南
android·rxjava·知识库·智能体·coze·字节·coze平台
万能的小裴同学6 分钟前
Android Studio 2025版JNI配置
android·ide·android studio
草莓熊Lotso11 分钟前
Python 流程控制完全指南:条件语句 + 循环语句 + 实战案例(零基础入门)
android·开发语言·人工智能·经验分享·笔记·后端·python
EasyDSS12 分钟前
视频推流平台EasyDSS无人机推流直播在应急抢险可视化指挥中的实践
音视频·无人机
モンキー・D・小菜鸡儿17 分钟前
Android11 新特性与适配指南
android·kotlin·安卓新特性
大模型实验室Lab4AI21 分钟前
Qwen-Video-8B与LLaMA-Factory联动实现垂类视频理解
人工智能·音视频·llama
习惯就好zz1 小时前
在安卓设备上测试 AWS S3 下载速度的完整指南
android·aws·速度测试
_李小白9 小时前
【Android FrameWork】延伸阅读:SurfaceFlinger线程
android
csdn122598733610 小时前
JetPack Compose 入门先搞清楚
android·compose·jetpack
liang_jy11 小时前
Android LaunchMode
android·面试