Поставщик облачного хранилища для потоковой передачи музыки

В качестве вступления я разрабатываю приложение с Flutter, в котором есть аудиораздел.

Я хотел бы затронуть две темы.

  1. На данный момент звук хранится в облаке, точнее с использованием Firebase. Основная проблема заключается в том, что цены не очень благоприятны при превышении порога пропускной способности. Кроме того, как я обнаружил, каждая песня полностью загружается при попытке ее воспроизвести. Следовательно, не имеет значения, что я хочу воспроизвести 10 секунд или 1 минуту песни, генерируется тот же трафик. Я использую пакет just_audio в качестве аудиобиблиотеки, и мне интересно, есть ли решение для интеграции решения для потоковой передачи, которое подразумевает буферизацию.

  2. Как я видел в журналах отладки, HTTP-запрос отправляется каждый раз, когда запрашивается воспроизведение песни (из облака). Теперь меня беспокоит то, что я не могу использовать just_audio для потоковой передачи. Есть ли облачное решение, которое обеспечивает хороший компромисс между ценой и пропускной способностью, даже если песня загружается полностью каждый раз, когда требуется действие воспроизведения? Я собираюсь разработать автономный режим для аудио раздела, чтобы каждую песню можно было воспроизводить из локальной памяти. Тем не менее, это должна быть опция пользователя, а не функция по умолчанию.

1 ответ

  1. Я нашел два решения для облачных хранилищ, которые предлагают хорошую цену за передачу данных. Первый вариант начинается с 5 долларов США в месяц, включая 1 ТБ и 0,01 доллара США / ГБ за дополнительный трафик. https://www.digitalocean.com/ . Второй начинается от 9 евро в месяц, включая 1 ТБ, а стоимость любого дополнительного трафика составляет 0,5 евро за ТБ.

  2. just-audio поддерживает HLS и MPEG-DASH. Поэтому для серверной части хорошим решением будет nginx с модулем rtmp.

Кредиты:https://docs.peer5.com/guides/setting-up-hls-live-streaming-server-using-nginx/

Настройка довольно проста:

      git clone https://github.com/sergey-dryabzhinsky/nginx-rtmp-module.git

sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev

wget http://nginx.org/download/nginx-1.19.0.tar.gz
tar -xf nginx-1.19.0.tar.gz
cd nginx-1.19.0

./configure --with-http_ssl_module --add-module=../nginx-rtmp-module
sudo make install

Затем для файла конфигурации следуйте инструкциям по ссылке выше.

Чтобы получить фрагменты .ts, я использовал ffmpeg со следующей командой.

      ffmpeg -i example.mp3 -c:a libmp3lame -b:a 128k -map 0:0 -f segment -segment_time 10 -segment_list outputlist.m3u8 -segment_format mpegts output%03d.ts

Переместите выходные файлы в папку песни из настроенного hls_path.

Поскольку поддерживается только https (http поддерживается только для целей тестирования, не рекомендуется в производственной среде), последним шагом является регистрация SSL-сертификата, и для этого я использовал Let's encrypt. https://letsencrypt.org/getting-started/ Если у вас есть доступ по ssh, хорошим вариантом будет cerbot https://certbot.eff.org/ .

Наконец, все можно протестировать прямо из приложения или через клиент HLS: http://players.akamai.com/players/hlsjs .

Вставьте ссылку на песню в аками плеер и все должно заработать. Пример: https://ваш_домен.com/hls/имя_песни/outputlist.m3u8

Другие вопросы по тегам