首页 > 其他分享 >RTE 开源|小红书 REDPlayer 正式发布!快来 get 同款播放器~

RTE 开源|小红书 REDPlayer 正式发布!快来 get 同款播放器~

时间:2024-03-01 18:57:33浏览次数:13  
标签:RTE 播放器 get 小红书 REDPlayer mMediaPlayer 开源 开发者 播放

本项目由 RTE 开发者社区 x 小红书 联合运营

 

播放器最初出现在 19 世纪,当时主要用于播放音频,例如通过留声机播放唱片。

 

随着技术的进步,音频播放器不断改进,品质越来越好,体积也越来越小。到了今天,通过手机或网络,人们可以随时随地播放音频和视频。

 

优秀的播放器有几个特性:需要提供强大、可扩展的功能,流畅的播放效果,顺畅的用户体验,兼容主流平台,资源占用小,安全性高。而市面上大多数播放器在兼容性、功能、性能、可定制性等方面还有一定的优化空间,这也是很多开发者/公司选择自主开发播放器的原因之一。

 

 

基于此,小红书自主研发了一款跨平台播放器 —— REDPlayer。不同于行业其他播放器,REDPlayer 具有结构简单、耦合度低、功能边界清晰等特点,提供了多种接入方式,技术人员可根据需要灵活选择,既可快速集成 SDK 使用,也可基于源码进行定制开发。

 

REDPlayer 开源地址:https://github.com/RTE-Dev/REDPlayer

 

**划重点:**Android、iOS、HarmonyOS 等平台统统支持!如 HLS、MP4、FLV 等多种协议和格式也都支持~

关于 REDPlayer

REDPlayer 的宗旨是让开发者可以快速清晰的了解播放器的基本构造,并可根据个人需求进行简单扩展,满足不同用户的多样需求,可作为学生学习的基础工具,也可作为企业的商用平台。

 

 


(REDPlayer 架构图)

 

REDPlayer 支持点播、直播场景下的多种协议和格式(如 HLS、MP4、FLV 等),并可二次扩展更多协议(如 RTC 等)。每个模块均是解耦的,开发者可以根据需要挂载自定义模块,如自研解码器、渲染器等。

 

 

 

添加小助手微信,备注 REDPlayer 进群和作者交流工具使用与开发的日常

功能亮点

在过去,由于代码质量、文档等问题,播放器的二次开发和定制化很困难。REDPlayer 兼容多平台,开发者现在可以直接集成 REDPlayer,提高开发效率,节省开发时间,让大家更加专注于业务逻辑的开发。此外,REDPlayer 架构清晰、扩展性好,这为二次开发提供了便利,可以根据实际业务需要定制播放器的功能,提升用户体验。

 

功能支持全面,降低开发成本:

 

  • REDPlayer 同时支持多端(如:Android、iOS、HarmonyOS等)点播、直播下的多种协议和格式(如:HLS、MP4、FLV 等);

  • 支持预载、边下边播等功能,减少等待时间,提升播放流畅性,给用户更好的观看体验;

  • 选择性支持 HDR、超分等能力;

 

便利的二次开发:

 

  • 架构清晰、结构简单,各模块耦合度低且可插拔、拓展性较好,能满足不同包体积要求下的业务使用;

 

低成本:

 

  • 内存占用较小、接入成本较低,可同时满足不同的场景使用(如:课堂学习、企业商用等);

 

用户自主性高:

 

  • 可选择直接根据 Interface 快速接入 SDK 使用、也可以选择基于 REDPlayer 代码做二次开发。开发者们可以根据自身需要选择。

 

 

 

目前 REDPlayer 开源的功能支持用于创建更复杂的场景,例如在播放一个视频的过程中,用户可以通过拖动进度条进行实时预览,或在观看过程中同时输入文字形成弹幕等,以丰富整个互动场景的体验。甚至,可以通过 REDPlayer,实现将抠图后的人像与视频画面共享叠加在一起的新视频画面。

REDPlayer 集成与使用

那么如何开始集成 REDPlayer 呢?REDPlayer 支持两种形式的接入方式,即直接 SDK 接入和代码接入,下面将针对这两种方式进行一一说明。

 

1、直接 SDK 接入

 

REDPlayer 既支持单一 URL 的输入,也支持多 URL 的方式(JSON 方式)输入,使用者可根据自己的需求灵活选择。

 

具体步骤如下:

 

步骤 1:

 

IMediaPlayer mMediaPlayer = new RedMediaPlayer(); //创建播放器、初始化

 

步骤 2:

 

mMediaPlayer.setDataSource(mAppContext, url); //设置url

 

步骤 3:

 

mMediaPlayer.setEnableMediaCodec(true); //配置播放参数 mMediaPlayer.setVideoCacheDir(cacheDir);
mMediaPlayer.setLoop(true);
...

 

步骤 4:

 

mMediaPlayer.prepareAsync(); //prepare

 

步骤 5:

 

mMediaPlayer.start(); //开始播放,prepared状态后调用
至此,视频已经正常播起来了,接下来用户可以根据需要调用不同的接口(具体可见 INTERFACE 介绍)获取对应的信息或做对应的动作,如:
void pause(); //暂停播放
void stop(); //停止播放
void reset(); //重置播放
void release(); //退出播放
long getCurrentPosition(); //获取播放位置
long getDuration(); //获取视频时长
float getSpeed(); //获取播放速度

 

2、C++ 代码接入

 

该模块可基于上述架构图中介绍,用户选择性地接入或替换,在此暂不做详细说明,具体可见开源工程(https://github.com/RTE-Dev/RedPlayer)。

 

标签:RTE,播放器,get,小红书,REDPlayer,mMediaPlayer,开源,开发者,播放
From: https://www.cnblogs.com/Agora/p/18047731

相关文章

  • Flutter widget_id: key 的使用
    Flutterwidgetid(唯一标识):keykey的作用Key是一个附加到元素(widgets,semantics,renderobjects等)的标识符。它用于控制框架是否应将旧widget与当前树中的其他widget匹配起来。简单来说,Keys的作用主要在于保持状态和在widget树重建时识别哪些widget是相同的。key的......
  • 微信小程序中调用wx.getSetting可以获取到哪些权限设置
    微信小程序中调用wx.getSetting可以获取到哪些权限设置:https://blog.csdn.net/u012767761/article/details/119648707?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170928385316800222888134%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&reque......
  • QVTKOpenGLNativeWidget中绘制vtkButtonWidget
    本文探讨了如何结合Qt和VTK(VisualizationToolkit)开发图形用户界面(GUI),通过一个具体的案例,详细介绍了如何在Qt应用程序中嵌入VTK渲染器,并创建交互式的图形元素,如按钮,以实现更丰富的用户体验。文章还深入剖析了如何处理按钮点击事件,以及如何将Qt的图像数据转换为VTK格式。介绍:在......
  • 【STM32】使用Keil5加载程序时出现No Target Connected错误的解决办法
    错误情况加载程序时弹出Notargetconnected的Error框,随后弹出Flashdownloadfailed-TargetDLLhasbeencancelled。此时打开设置中Debug选项的Setting窗口,显示SWDIO中Notargetconnected解决办法检查设置里的Debug选项里的调试器型号有没有选对,如下图所示,我用的是S......
  • 关于import cvxopt :ImportError: DLL load failed: 找不到指定的模块。
    前提:前天再写python代码时遇到需要使用到cvxopt包求解QP问题,但是之前却没有安装过这个包,所以对其进行安装。报错:在pipinstallcvxopt后直接使用,出现报错。之后在网上查各种解决办法的方案,但在运行后均出现不同报错情况。我所需要解决的问题主要是numpy、scipy和cvxopt之间不兼容......
  • 微信小程序使用getuserinfo获取用户信息
    微信小程序使用getuserinfo获取用户信息:https://blog.csdn.net/LzzMandy/article/details/104557711?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170920091516800213033769%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=1709200915......
  • Get a Record and List of Entities in PowerAutomate for D365
    WecontinuewiththeseriesofarticlesaboutPowerAutomateandthedifferentoperationsthatcanbeperformedonMicrosoftDynamics365FinanceandOperationsapps.Aswesawinthepreviousarticle,thankstotheMSDyn365FOpremiumconnectorforPower......
  • SiteServer CMS远程模板下载getshell漏洞导致的黑SEO利用分析溯源
    前言某日中午,涉及一代理商客户网站发现异常SQ内容,要求进行溯源分析并找出根本原因。0x01初步分析通过提供的链接(www.xxx.com.cn/2023j19tPLKn2/55151),确认涉及黑帽SEO活动,通过百度搜索进一步验证也证实了这一点。0x02日志分析黑客常常在植入菠菜或非法广告的网站中设置后......
  • Vuex系列之(七)getters配置项
    getters配置项概念:getters配置项并不是必须要使用的,当state中的数据需要经过加工后再使用时,可以使用getters加工。应用场景:运算逻辑复杂而且需要复用,用于抽取基于state中数据的公共运算在store.js中追加getters配置......//准备getters——用于加工state中的数据cons......
  • 字节被曝秘密研发多个 AI 产品;库克:苹果将「开辟 AI 新天地」丨 RTE 开发者日报 Vol.15
      开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑......