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

相关推荐
狗凯之家源码网3 小时前
吃瓜主题 3.0 视频源码深度评测与实战指南
音视频
拥小抱7 小时前
Compose 知识点
android
文章永久免费只为良心7 小时前
Web应用安全与防护_第三章_日志文件包含_从一道 CTFshow 题目讲透「日志投毒型 LFI → RCE」:原理、时序陷阱与全变种攻防手册
android·网络安全·渗透测试·漏洞危害·漏洞描述·日志投毒·红队指南
AIsoft_86897 小时前
学术讲座录音如何整理?录音APP可行吗
android·iphone
美狐美颜sdk7 小时前
视频美颜SDK中的YUV与RGBA格式有什么区别?直播APP开发解析
人工智能·计算机视觉·音视频·美颜sdk·直播美颜sdk·视频美颜sdk
音视频牛哥8 小时前
不止于超低延迟:SmartMediaKit iOS Unity3D RTSP/RTMP 播放器的核心竞争力
音视频·unity3d rtsp播放器·unity3d rtmp播放器·smartmediakit·ios unity rtsp·ios unity rtmp·unity3d ios播放器
Patrick在香港9 小时前
一个斜杠,把毫秒变成十几秒
android·数据库·python·性能优化·正则表达式·回溯·redos
辰辰观影10 小时前
网盘视频播放器怎么选?2026全平台推荐
经验分享·音视频
海雅达手持终端PDA11 小时前
工业手持终端的“去手机化”演进:看海雅达如何以“同轴扫摄”终结工程妥协,重塑工业PDA新范式
android·物联网·智能手机·硬件工程·能源·制造·iot
guhy fighting11 小时前
怎么去除视频的logo?现在有方法了,使用Remove Logo Now快速去除视频logo
音视频