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开发实战:从零基础到短视频上线》一书。
FFmpeg开发笔记(六十四)使用国产的RedPlayer播放器观看网络视频的更多相关文章
- FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台
FFmpeg和SDL开发专栏(点击传送门) 上一篇:<FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放>下一篇:敬请期待 前言 将ffmpeg移植到海思H ...
- 树莓派开发笔记(十四):入手研华ADVANTECH工控树莓派UNO-220套件(三):使用研发自带系统测试rtc、gpio、232和485套件接口
前言 上一篇说明了必须要使用研华自带的8G卡的系统,通过沟通拿到了相关的系统,购买的时候会带8GB的卡,请自行备份一份镜像.本篇对uno-220套件的相关研华配套的额外接口做测试,篇幅较长,重点讲 ...
- java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)
java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...
- 从零开始学习PYTHON3讲义(十四)写一个mp3播放器
<从零开始PYTHON3>第十四讲 通常来说,Python解释执行,运行速度慢,并不适合完整的开发游戏.随着电脑速度的快速提高,这种情况有所好转,但开发游戏仍然不是Python的重点工作. ...
- Java开发笔记(十四)几种运算符的优先级顺序
到目前为止,我们已经学习了Java语言的好几种运算符,包括算术运算符.赋值运算符.逻辑运算符.关系运算符等基础运算符,并且在书写赋值语句时都没添加圆括号,显然是默认了先完成算术.逻辑.关系等运算,最后 ...
- 论文阅读笔记六十四: Architectures for deep neural network based acoustic models defined over windowed speech waveforms(INTERSPEECH 2015)
论文原址:https://pdfs.semanticscholar.org/eeb7/c037e6685923c76cafc0a14c5e4b00bcf475.pdf 摘要 本文研究了利用深度神经网络 ...
- Android笔记(六十四) android中的动画——补间动画(tweened animation)
补间动画就是只需要定义动画开始和结束的位置,动画中间的变化由系统去补齐. 补间动画由一下四种方式: 1.AplhaAnimation——透明度动画效果 2.ScaleAnimation ——缩放动画效 ...
- .Net开发笔记(十四) 基于“泵”的UDP通信(接上篇)
上一篇中说到了“泵”在编程中的作用以及一些具体用处,但没有实际demo,可能不好理解,这篇文章我分享一个UDP通信的demo,大概实现了类似“飞鸽传书”在局域网中文本消息和文件传输的功能.功能不全也不 ...
- Hi3516开发笔记(十):Qt从VPSS中获取通道图像数据存储为jpg文件
前言 上一篇已经将himpp套入qt的基础上进行开发.那么qt中拿到frame则是很关键的交互,这是qt与海思可能编解码交叉开发的关键步骤. 受限制 因为直接配置sample的vi比较麻烦 ...
- FFmpeg开发笔记(四):ffmpeg解码的基本流程详解
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
随机推荐
- AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
引言 人工智能(AI)技术的迅猛发展推动了各行各业的数字化转型.图像分类,作为计算机视觉领域的核心技术之一,能够让机器自动识别图像中的物体.场景或特征,已广泛应用于医疗诊断.安防监控.自动驾驶和电子商 ...
- MUX-VLAN
MUX VLAN(Multiplex VLAN)是一种高级的VLAN技术,它通过在交换机上实现二层流量隔离和灵活的网络资源控制,提供了一种更为细致的网络管理方式. 一.基本概念 MUX VLAN分为主 ...
- SQL索引失效的场景有哪些
SQL优化里面主要是围绕索引来展开的,SQL优化的一大重点就是避免索引失效,因为索引失效就会导致全表扫描,数据量很大的情况下能明显感受到查询速度的降低. 下面说说索引失效的各种场景. 使用索引的时候, ...
- java学习-8【EnumMap】
EnumMap和EnumSet几乎是一样的,区别时EnumMap的key时Enum. public enum Types { RED,GREEN,BLACK,YELLO } @Test public ...
- 理解PostgreSQL和SQL Server中的文本数据类型
理解PostgreSQL和SQL Server中的文本数据类型 在使用PostgreSQL时,理解其文本数据类型至关重要,尤其对有SQL Server背景的用户而言.尽管两个数据库系统都支持文本存储, ...
- mysql日期格式说明
mysql日期格式说明 %a:缩写星期名 %b:缩写月名 %c:月,数值 %D:带有英文前缀的月中的天 %d:月的天,数值(00-31) %e:月的天,数值(0-31) %f:微秒 %H:小时(00- ...
- 定时任务Cron表达式工具类Cron Util
依赖 cron-utils的github地址:https://github.com/jmrozanec/cron-utils <dependency> <groupId>com ...
- mysql8的sql_mode不起作用
如果sql_mode似乎没有起作用,可能是由以下几个原因造成的: 配置文件位置不正确:确保my.ini文件位于MySQL服务器实际读取配置的位置.对于Windows系统,这通常是MySQL安装目录下的 ...
- 搞定 XLSX 预览?别瞎找了,这几个库(尤其最后一个)真香!
- Hey, 我是 沉浸式趣谈 - 本文首发于[沉浸式趣谈],我的个人博客 **https://yaolifeng.com** 也同步更新. - 转载请在文章开头注明出处和版权信息. - ...
- php 二维数组转成一维数组
// 1 $c = call_user_func('array_merge', $reds);// 2 $c = array_merge(...$reds);// 3 array_map(functi ...