react-native-track-player

react-native-track-player

React Native全功能音频模块 支持多平台音乐应用开发

react-native-track-player是专为音乐应用设计的全功能音频模块。它支持Android、iOS和Web平台,提供音频播放、外部媒体控制和后台模式等功能。该模块可播放本地和网络音频,包括流媒体。其特点包括轻量级、原生体验和高度可定制性,并支持React Hooks。这使其成为需要先进音频功能的React Native应用开发的理想选择。

React Native音频播放背景模式多平台支持媒体控制Github开源项目
<img src="https:/rntp.dev/img/optimized-logo.svg" width="300" />

下载量 npm Discord Commitizen友好


为音乐应用创建的全功能音频模块。提供音频播放、外部媒体控制、后台模式等功能!

<div align="left" valign="middle"> <a href="https://runblaze.dev"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://www.runblaze.dev/logo_dark.png"> <img align="right" src="https://yellow-cdn.veclightyear.com/0a4dffa0/49de520a-5e68-428b-8922-a72f00904ada.png" height="102px"/> </picture> </a> <br style="display: none;"/>

Blaze 通过提供超快的基于Apple Silicon的macOS Github Action运行器来赞助RNTP。在结账时使用折扣码RNTP50可获得首年50%的折扣。

</div>

概述

不知道从哪里开始?

  1. 试试入门指南
  2. 仔细阅读API文档
  3. 运行示例项目

商业用途

你是否在个人项目中使用RNTP? 太好了!如果可以的话请赞助我们,否则你可以通过报告发现的任何bug、发送项目截图以及在Github上给我们加星来支持我们 🌟

你是否在组织中使用RNTP和/或从中获利? 太棒了!我们依靠你的支持来保持RNTP在Apache-2.0许可下的开发和维护。你可以通过Github赞助商来实现这一点。

特性

  • 轻量级 - 根据你的需求优化以使用最少的资源
  • 感觉原生 - 由于所有内容都是一起构建的,它遵循与真实音乐应用相同的设计原则
  • 多平台 - 支持Android、iOS和Web
  • 媒体控制支持 - 提供从蓝牙设备、锁屏、通知、智能手表甚至汽车控制应用的事件
  • 本地或网络,文件或流 - 无论媒体属于何处,我们都能满足你的需求
  • 自适应比特率流支持 - 支持DASH、HLS或SmoothStreaming
  • 缓存支持 - 缓存媒体文件以便在没有互联网连接的情况下再次播放
  • 后台支持 - 即使应用在后台也能继续播放音频
  • 完全可定制 - 甚至通知图标都是可定制的!
  • 支持React Hooks 🎣 - 包含常见用例的React Hooks,这样你就不必自己编写

为什么要另一个音乐模块?

在尝试将react-native-soundreact-native-music-controlsreact-native-google-cast等模块组合在一起后,我注意到它们的结构和应该如何将它们绑定在一起可能会导致很多问题(主要在Android上)。这些问题可能会严重影响应用的稳定性和用户体验。

所有音频模块(如react-native-sound)在Android上不在单独的服务中播放,这应该用于前台的简单音频轨道(如音效、语音消息等)。

react-native-music-controls是为使用这些音频模块的应用而设计的,但它有一些问题:音频并不直接与控制绑定。它对于投射(如Chromecast)可能非常有用。

react-native-google-cast工作得很好,也支持自定义接收器,但它的播放器控制较少,更难集成,而且仍然使用Cast SDK v2。

示例设置

首先请查看入门指南,但这里有一个播放曲目的基本示例:

import TrackPlayer from 'react-native-track-player'; const start = async () => { // 设置播放器 await TrackPlayer.setupPlayer(); // 向队列添加一个曲目 await TrackPlayer.add({ id: 'trackId', url: require('track.mp3'), title: '曲目标题', artist: '曲目艺术家', artwork: require('track.png') }); // 开始播放 await TrackPlayer.play(); }; start();

核心团队 ✨

<table> <tr> <td align="center"><a href="https://github.com/dcvz"><img src="https://avatars.githubusercontent.com/u/2475932?v=4" width="100px;" alt=""/><br /><sub><b>David Chavez</b></sub></a><br /></td> </tr> </table>

外部核心贡献者 ✨

<table> <tr> <td align="center"><a href="https://github.com/jspizziri"><img src="https://avatars.githubusercontent.com/u/1452066?v=4" width="100px;" alt=""/><br /><sub><b>Jacob Spizziri</b></sub></a><br /></td> <td align="center"><a href="https://github.com/puckey"><img src="https://avatars.githubusercontent.com/u/271885?v=4" width="100px;" alt=""/><br /><sub><b>Jonathan Puckey</b></sub></a><br /></td> </tr> </table>

特别感谢 ✨

<table> <tr> <td align="center"><a href="https://github.com/Guichaguri"><img src="https://avatars.githubusercontent.com/u/1813032?v=4" width="100px;" alt=""/><br /><sub><b>Guilherme Chaguri</b></sub></a><br /></td> <td align="center"><a href="https://github.com/curiousdustin"><img src="https://avatars.githubusercontent.com/u/1706540?v=4" width="100px;" alt=""/><br /><sub><b>Dustin Bahr</b></sub></a><br /></td> </tr> </table>

贡献

我们希望这个软件包能够出色,而您也想要它出色。您可能已经知道可以直接提交问题,但这实际上并不是获得所需帮助的最佳方式(继续阅读以了解原因)。最好的方式是成为一名冠军深入代码

提交问题

实际上,仅仅提交问题并不总是足够的。这种方式只有在您的问题同时符合核心团队的兴趣和可用资源时才可能有效。以下是符合我们兴趣的事项,按优先级排序:

  1. 修复广泛、常见且关键的错误
  2. 修复不常见但必要的错误
  3. 引入具有广泛价值的新功能

请记住可用资源的限制。简而言之,您关心的事情需要得到很多其他人或我们的关注。

**但是!**还有一种arguably更好的方式,可以帮助您更快地获得所需的帮助:成为一名冠军

成为一名冠军

成为一名冠军可以让我们更容易帮助您。这正是我们都想要的!那么,如何成为一名冠军呢?赞助项目或_愿意编写一些代码_。

如果_您愿意_编写一些代码,我们愿意

  • 开启设计讨论,提供反馈,并批准可行的方案。
  • 在实施过程中提供指导。

简而言之,让我们知道您愿意做这项工作并寻求一些指导,您就会看到您关心的事情比其他人更快得到解决。我们会为那些愿意自助的人提供最好的帮助。

您说您没有经验?没关系!

您可能认为自己无法提供帮助,因为对原生iOS或Android甚至React代码一无所知。但我们愿意为您提供指导。

如果您愿意接受这个任务,我们可以帮助您理解原生代码和React Native的工作原理。

从_不知道_到_知道_的唯一方法就是学习。学习不是一件应该感到羞耻或害怕的事。

从何处开始?

我们的目标是让您尽可能容易地对库进行修改。有关如何处理库及其依赖项的所有文档都在本指南中

发布

本项目的标准发布命令是yarn version

yarn version [--major | --minor | --patch | --new-version <version>]

例如:

yarn version --new-version 1.2.17
yarn version --patch // 1.2.17 -> 1.2.18
yarn version --minor // 1.2.18 -> 1.3.0
yarn version --major // 2.0.0

此命令将:

  1. 生成/更新更新日志
  2. 升级包版本
  3. 标记并推送提交
  4. 构建并发布包

社区

您可以在React Native Track Player中找到我们:

  • #introduce-yourself - 来欢迎这个群组的新成员!
  • #troubleshooting-forum - 请社区成员帮助排查您应用程序的问题并提供建议。
  • #show-and-tell - 向社区展示您使用这个项目制作的应用程序!
  • #news-and-releases - 了解项目的最新发布和开发动态。

编辑推荐精选

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
商汤小浣熊

商汤小浣熊

最强AI数据分析助手

小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。

imini AI

imini AI

像人一样思考的AI智能体

imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。

Keevx

Keevx

AI数字人视频创作平台

Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。

即梦AI

即梦AI

一站式AI创作平台

提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作

扣子-AI办公

扣子-AI办公

AI办公助手,复杂任务高效处理

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
下拉加载更多