Viktor G.

iOS developer

День рождения блога

Ура! Этому блогу ровно год!


Вызов функции из другого класса (Паттерн Наблюдатель) Swift 5

Одна из частых задач при написании приложения на Swift - передача данных из одного VC в другой. На этот раз мне нужно было вызвать функцию и остановить воспроизведение аудиопотока из нового VC.


Отметка о потоковом аудио Swift 5

Стандартный набор метаданных аудиоплеера в iOS включает в себя название и длительность, а блок в контрольной панели - кнопки play/pause, переключатель и громкость. Если речь идёт о потоковом аудио, следует поменять блок длительность на пометку "Live".


Слайдер громкости Swift 5

Чтобы не мучаться со стандартным слайдером для управления громкостью, я использую MPVolumeView, который прекрасно работает для аудиоплеер. Единственный его минус - он не виден ни в симуляторе, и проверить его работу можно только на устройстве.


MIDI контроллер на Arduino

Гораздо раньше, чем я приобрёл старую версию Raspberry Pi, я купил небольшую плату на базе Arduino Uno. Поигравшись в электронику и схемотехнику, я отложил микроконтроллер на долгое время, не найдя ему практического применения. Ещё тогда я собрал на его основе контроллер, управляющий музыкальным софтом с помощью MIDI, но дальше 4 потенциометров дело не дошло.


История треков на радио (Icecast)

Добавляю функционал на радио. На этот раз задача простая: показывать историю треков.

Было легко найти скрипт, показывающий текущую песню, но вот найти такой для показа истории треков (последние N песен на радио) нет. Приходится делать самостоятельно:


Регулярная проверка радиостанции (Телеграм бот)

Что делать, если радио выключилось? Допустим, наш сервер работает как часы, а вот хост, который отправляет аудиопоток через Icecast, внезапно выключился. В моём случае это может быть вызвано, например, сбоями в сети у меня дома, где стоит Raspberry Pi, с которого играет музыка.


Icecast https (Nginx прокси)

Последней проблемой при установке и настройке радиостанции было отсутсвие https на контрольной панели, аудиопотоке и json-файлах с метаданными. Icecast автоматически устанавливается по адресу http://127.0.0.69:8000, а сам аудиопоток, соответственно, http://127.0.0.69:8000/listen.mp3

На дворе 2019 год, и любой современный браузер будет если не ругаться, то сообщать о небезопасном сайте, если подключение происходит без https, а значит при добавлении плеера с нашим аудиопотоком страница будет считаться небезопасной.

Решение оказалось проще, чем я думал - проксирование с помощью Nginx.