为音乐应用创建的全功能音频模块。提供音频播放、外部媒体控制、后台模式等功能!
Blaze 通过提供超快的基于Apple Silicon的macOS Github Action运行器来赞助RNTP。在结账时使用折扣码RNTP50
可获得首年50%的折扣。
概述
不知道从哪里开始?
商业用途
你是否在个人项目中使用RNTP? 太好了!如果可以的话请赞助我们,否则你可以通过报告发现的任何bug、发送项目截图以及在Github上给我们加星来支持我们 🌟
你是否在组织中使用RNTP和/或从中获利? 太棒了!我们依靠你的支持来保持RNTP在Apache-2.0许可下的开发和维护。你可以通过Github赞助商来实现这一点。
特性
- 轻量级 - 根据你的需求优化以使用最少的资源
- 感觉原生 - 由于所有内容都是一起构建的,它遵循与真实音乐应用相同的设计原则
- 多平台 - 支持Android、iOS和Web
- 媒体控制支持 - 提供从蓝牙设备、锁屏、通知、智能手表甚至汽车控制应用的事件
- 本地或网络,文件或流 - 无论媒体属于何处,我们都能满足你的需求
- 自适应比特率流支持 - 支持DASH、HLS或SmoothStreaming
- 缓存支持 - 缓存媒体文件以便在没有互联网连接的情况下再次播放
- 后台支持 - 即使应用在后台也能继续播放音频
- 完全可定制 - 甚至通知图标都是可定制的!
- 支持React Hooks 🎣 - 包含常见用例的React Hooks,这样你就不必自己编写
为什么要另一个音乐模块?
在尝试将react-native-sound
、react-native-music-controls
和react-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();
核心团队 ✨
外部核心贡献者 ✨
特别感谢 ✨
贡献
我们希望这个软件包能够出色,而您也想要它出色。您可能已经知道可以直接提交问题,但这实际上并不是获得所需帮助的最佳方式(继续阅读以了解原因)。最好的方式是成为一名冠军并深入代码。
提交问题
实际上,仅仅提交问题并不总是足够的。这种方式只有在您的问题同时符合核心团队的兴趣和可用资源时才可能有效。以下是符合我们兴趣的事项,按优先级排序:
- 修复广泛、常见且关键的错误。
- 修复不常见但必要的错误。
- 引入具有广泛价值的新功能。
请记住可用资源的限制。简而言之,您关心的事情需要得到很多其他人或我们的关注。
**但是!**还有一种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
此命令将:
- 生成/更新更新日志
- 升级包版本
- 标记并推送提交
- 构建并发布包
社区
您可以在React Native Track Player中找到我们:
#introduce-yourself
- 来欢迎这个群组的新成员!#troubleshooting-forum
- 请社区成员帮助排查您应用程序的问题并提供建议。#show-and-tell
- 向社区展示您使用这个项目制作的应用程序!#news-and-releases
- 了解项目的最新发布和开发动态。