Сравнение двух лучших библиотек аудиоплееров для разработки React Native: React-Native-Track-Player и React-Native-Sound.

Музыкальный/аудиоплеер является важным компонентом многих мобильных приложений, ориентированных на развлечения. Если вы выберете React Native для разработки своего аудиоплеера, вы можете выбрать один из двух популярных вариантов библиотеки: React-Native-Track-Player (RN-Track-Player) и React-Native-Sound (RN-Sound).
Имея это в виду, давайте рассмотрим плюсы и минусы каждой библиотеки.
Содержание этой статьи разделено следующим образом для удобства читателя.
- React-Native-Sound
- React-Native-Track-Player
- Параметры воспроизведения аудио
- Загрузка аудиофайлов
- Воспроизведение аудио (стерео и моно)
- "Документация"
- Поддержка сообщества
- "Заключение"
1. React-Native-Sound
React-Native-Sound — это скорее класс, чем компонент класса, который обладает способностью манипулировать экземплярами с помощью предопределенных методов без обновления свойств или состояний. Распакованный размер библиотеки составляет около 88 КБ, и она лицензирована MIT. Это один из популярных модулей React Native для воспроизведения аудиофайлов в iOS, Android и Windows.
Утверждение в документации NPM библиотеки, в котором говорится, что библиотека находится в альфа-версии и может содержать ошибки. Это может сделать разработчика, который хочет использовать библиотеку, неохотно. Однако это никак не повлияло на количество загрузок в неделю.
Текущая версия библиотеки — 0.11.2, а с 2016 по 2022 год выпущено 34 версии.
RN-Sound не работает в отдельном сервисе на Android. Поэтому он ограничивает использование библиотеки только для воспроизведения простых звуковых дорожек на переднем плане, таких как звуковые эффекты, голосовые сообщения и т. д. Да, вы можете создать полноценное музыкальное приложение с помощью RN-Sound, но мы поговорим об этом в следующей главе. специально разработан для реализации музыкальных плееров.
2. React-Native-Track-Player
React-Native-Track-Player — это полноценный аудиомодуль React Native, реализованный для музыки и любых мобильных аудиоприложений. Распакованный размер библиотеки составляет около 2,57 МБ, и она лицензирована для Apache 2.0.
RN-Track-Player был выпущен после RN-Sound как решение проблем, связанных с RN-Sound. Это была цель создать легкую, полностью настраиваемую, многоплатформенную библиотеку аудиоплеера React Native с поддержкой всей основной поддержки управления мультимедиа, и это ожидание оправдалось. Большинство нативных функций, которые следуют тем же принципам проектирования, которым следуют настоящие музыкальные приложения, собраны вместе, чтобы обеспечить превосходный опыт как пользователю, так и разработчику.
Поддержка Android для react-native-track-player основана на библиотеке медиаплеера Google ExoPlayer. RN-Track-Player работает как отдельная служба на Android, что обеспечивает меньшее количество зависимостей и высокую стабильность. В любом случае, RN-Track-Player поддерживает как iOS, так и Windows.
Тем не менее, в релизных версиях 1.0 было много ошибок. С выпуском версии 2.0 (текущая версия — 2.1.2) библиотеки большинство проблем было успешно решено, и теперь она стабильна и безопасна для использования в коммерческих приложениях. С 2017 по 2022 год выпущено 78 версий библиотеки.
3. Параметры управления звуком
Почти все основные параметры управления звуком доступны как в react-native-sound, так и в track-player.
Основные функции, такие как воспроизведение, обратный вызов завершения окупаемости, пауза, возобновление, остановка, переход вперед/назад, сброс, получение продолжительности, получение системной громкости, изменение громкости, изменение режима воспроизведения (аудиоциклы), изменение скорости, получение текущего времени воспроизведения. основные функции, поддерживаемые обеими библиотеками для мобильных устройств Android и iOS.
Как в RN-Sound, так и в RN-Track-Player доступны фоновое воспроизведение звука, воспроизведение в панели уведомлений и параметры блокировки экрана [Рисунок 3].
Но есть некоторые вариации. В RN-Track-Player воспроизведение звука, управление звуком и настройка параметра «воспроизведение в панели уведомлений» поддерживаются только в Android, а в iOS поддерживается только воспроизведение звука.
В RN-Sound опция «воспроизведение в панели уведомлений» доступна только в Android и не может быть настроена.
Классная встроенная функция RN-Track-Player заключается в том, что скин панели уведомлений меняется в зависимости от «доминирующего цвета изображения», используемого с аудиоклипом. Например, если преобладающий цвет изображения — серый, то оболочка изображения также автоматически становится сероватой [Рисунок 4].

4. Загрузка аудиофайлов в проигрыватель
Загрузка аудиофайлов в проигрыватель — еще один важный фактор, о котором следует помнить, когда вам нужно сделать выбор между проигрывателем дорожек и реагирующим нативным звуком.
RN-Sound может загружать аудиофайлы либо из комплекта приложений, других каталогов (файловая система), либо из сети. Здесь под загрузкой из сети понимается «загрузка аудиофайла из удаленного хранилища и последующее воспроизведение на устройстве». Однако возможность потоковой передачи в «РН-Звук» не реализована.
Точно так же проигрыватель RN-Track также поддерживает воспроизведение из пакета приложений, файловой системы и удаленной сети. Но он поддерживает потоковую передачу, что также является дополнительным преимуществом при использовании RN-Track-Player. Обычная потоковая передача, DASH, HLS и SmoothStreaming поддерживается в Android, тогда как в iOS поддерживаются только обычные потоки и потоковая передача HLS. Еще одним преимуществом потоковой передачи является поддержка потоковой передачи с адаптивным битрейтом и кэширования.
Благодаря потоковой передаче с адаптивным битрейтом приложение может загружать аудиофайлы с разной скоростью передачи данных в зависимости от пропускной способности сети. А благодаря поддержке кэширования приложение может воспроизводить аудиофайлы и в автономном режиме.
5. Воспроизведение аудио (стерео и моно)
Обе библиотеки поддерживают как стерео, так и моно аудиофайлы. Особенность заключается в том, что следующий API RN-Sound может настраивать параметры воспроизведения.
getPan(): Возвращает положение стереопанорамы аудиоплеера (не общесистемное панорамирование) в диапазоне от -1,0 (полностью слева) до 1,0 (полностью справа). Значение по умолчанию — 0,0 (по центру).setPan(): значение {число} Установите панорамирование в диапазоне от -1,0 (полностью слева) до 1,0 (полностью справа).getNumberOfChannels: возвращает количество каналов (1 для моно и 2 для стереозвука) или -1 перед загрузкой звука.
К сожалению, RN-Track-Player не имеет никакого способа настройки, но по умолчанию поддерживает как стерео, так и моно аудиоклипы. Поэтому, если приложение, которое вы собираетесь создавать, требует специальных функций для настройки воспроизведения звука, то использовать RN-Sound нецелесообразно, в противном случае достаточно RN-Track-Player.
6. Документация
Несомненно, документация React-Native-Track-Player более удобна для пользователя, чем у React-Native-Sound.
От установки до применения большинства API, доступных в библиотеке, достаточно объяснено в документации их проигрывателя треков. В библиотеках для операционных систем Android и iOS есть исчерпывающее описание поддержки встроенных функций и событий, благодаря чему разработчику не требуется запускать и тестировать библиотеку перед использованием.
Напротив, документация РН-Звук не совсем удобна для разработчиков. В документации NPM выделены только основные API. Существует несколько документаций API, выпущенных различными разработчиками, но ни одна из них не является более описательной и всеобъемлющей, чем документация RN-Track-Player.
7. Поддержка сообщества и популярность
Самый большой страх любого молодого разработчика — плохая поддержка со стороны сообщества, построенного вокруг определенной платформы. Да, в большинстве случаев безопаснее использовать то, что используется большинством, потому что может быть по крайней мере один человек, который может уже столкнуться с той же проблемой и решить ее, прежде чем мы снова перейдем к ней сами.
К счастью, если сосредоточиться на поддержке сообщества, число пользователей обеих библиотек значительно выросло. Они подняли различные проблемы, и в обеих библиотеках большинство таких проблем было решено. Но количество нерешенных вопросов в react-native-sound намного выше по сравнению с Track Player.
Из 1100 задач только 49 все еще открыты в track-player, а 297 из 700 задач открыты в react-native-sound. Поэтому можно заметить, что сообщество вокруг трек-плеера становится больше.
Репозитории GitHub (RN-Sound, RN-Track-Player) обеих библиотек имеют репутацию с более чем 2000 звездами, но, учитывая еженедельные загрузки, очевидно, что react-native-sound более популярен, чем track- игрок [Рисунок 4]. Причина, по которой эта тенденция получила признание как react-native-sound, — это скорее скелет, в который разработчики могут добавлять различные функции.
Если вы создаете музыкальное приложение с нуля, то лучшим вариантом будет react-native-sound. И меньший размер по сравнению с трековым плеером может быть еще одной причиной, почему react-native-sound более популярен.

Вот два лучших справочных проекта для RN-Sound и Track-Player, прежде чем вы начнете свою разработку:
RN-Sound: https://github.com/johnsonsu/react-native-sound-player
RN-Track-Player: https://github.com/andordavoti/react-native-track-player
8. Заключение
Библиотеки RN-Sound и RN-Track-Player широко используются при разработке мобильных аудио/музыкальных приложений. Популярность RN-Track-Player растет благодаря поддержке потоковой передачи, массовой настройке и большому количеству встроенных функций.
Если вы хотите разработать очень легкое приложение с нуля с надеждой на интеграцию расширенных функций, RN-Sound — хороший выбор.
Но для поддержки потоковой передачи в вашем приложении вам, возможно, придется обратиться за помощью к другой библиотеке, такой как React-Native-Audio-Toolkit.
Тем не менее, какую бы библиотеку вы ни использовали, чтобы получить наилучшие результаты в конечном продукте, вам, возможно, придется включить другие библиотеки, такие как React-Native-Slider, React-Native-Vector-Icons и т. д. Функциональные возможности пользовательского интерфейса лучше быть реализованы с помощью вышеуказанных библиотек, и вы можете вызывать API-интерфейсы в библиотеках RN-Track-Player/RN-Sound для реализации полной функциональности.
Ссылки
Создавайте компонуемые интерфейс и серверную часть
Не создавайте веб-монолиты. Используйте Bit для создания и компоновки несвязанных программных компонентов — в ваших любимых фреймворках, таких как React или Node. Создавайте масштабируемые и модульные приложения с мощными и приятными возможностями разработки.
Перенесите свою команду в Bit Cloud, чтобы совместно размещать и совместно работать над компонентами, а также значительно ускорить, масштабировать и стандартизировать разработку в команде. Начните с компонуемых интерфейсов, таких как Design System или Micro Frontends, или исследуйте компонуемый сервер. Попробуйте →
