Опубликован выпуск PeerTube 2.3, децентрализованной платформы для организации видеохостинга и видеовещания. PeerTube предлагает независимую от отдельных поставщиков альтернативу YouTube, Dailymotion и Vimeo, использующую сеть распространения контента на базе P2P-коммуникаций и связывания между собой браузеров посетителей. Наработки проекта распространяются под лицензией AGPLv3.
PeerTube базируется на применении BitTorrent-клиента WebTorrent, запускаемого в браузере и использующего технологию WebRTC для организации прямого P2P-канала связи между браузерами, и протокола ActivityPub, позволяющего объединить разрозненные серверы с видео в общую федеративную сеть, в которой посетители участвуют в доставке контента и имеют возможность подписки на каналы и получения уведомлений о новых видео. Предоставляемый проектом web-интерфейс построен с использованием фреймворка Angular.
Федеративная сеть PeerTube образуется как содружество связанных между собой небольших серверов хостинга видео, на каждом из которых имеется свой администратор и могут быть приняты свои правила. Каждый сервер с видео выполняет роль BitTorrent-трекера, на котором размещены учётные записи пользователей данного сервера и их видео. Идентификатор пользователя формируются в форме «@имя_пользователя@домен_сервера». Передача данных при просмотре осуществляется непосредственно из браузеров других посетителей, просматривающих контент.
Если видео никто не просматривает, отдача организуется сервером, на который изначально загружено видео (используется протокол WebSeed). Помимо распределения трафика между пользователями, просматривающими видео, PeerTube также позволяет узлам, запущенным авторами для первичного размещения видео, кэшировать видео других авторов, формируя распределённую сеть не только из клиентов, но и из серверов, а также обеспечивая отказоустойчивость.
Для начала вещания через PeerTube пользователю достаточно загрузить на один из серверов видеоролик, описание и набор тегов. После этого ролик станет доступен во всей федеративной сети, а не только с сервера первичной загрузки. Для работы с PeerTube и участия в распространении контента достаточно обычного браузера и не требуется установка дополнительного ПО. Пользователи могут отслеживать активности в выбранных видеоканалах, подписавшись на интересующие каналы в федеративных социальных сетях (например, в Mastodon и Pleroma) или через RSS. Для распространения видео с использованием P2P-коммуникаций пользователь также может добавить на свой сайт специальный виджет со встроенным web-плеером.
В настоящее время для размещения контента запущены более 300 серверов, поддерживаемых разными добровольцами и организациями. Если пользователя не устраивают правила размещения видео на определённом сервере PeerTube, он может подключиться к другому серверу или запустить свой собственный сервер. Для быстрого развёртывания сервера предоставляется преднастроенный образ в формате Docker (chocobozzz/peertube).
Добавлена поддержка глобального поиска (по умолчанию отключена и требует активации администратором).
Администратору предоставлена возможность определения баннера, отображаемого на страницах текущего экземпляра PeerTube.
Расширены средства построения федеративных сетей: Добавлена настройка для передачи другим сетям видео, не включённых в публичные списки. Реализована поддержка сортировки файлов видео по экранному разрешению в обратном порядке. Обеспечена отправка полных описаний объектов видео через ActivityPub.
Модераторам предоставлена возможность массового удаления комментариев для заданной учётной записи и отключений учётных записей во время просмотра миниатюр. Добавлена поддержка предопределения типовых причин удаления.
Проведена оптимизация использования всего доступного экранного пространства при отображении сетки миниатюр.
На странице «My videos» добавлен счётчик видео и информация о канале.
Упрощена навигация по меню в интерфейсе администратора.
Предоставлена возможность ограничения доступа к RSS-лентам с новыми видео для определённых каналов и учётных записей.
Предложен альфа-выпуск плагина Auto block videos, позволяющего блокировать видео на основе публичных списков блокировки.
Следуя общей тенденции в применении инклюзивных терминов, функция «videos blacklist» переименована в «videos blocks/blocklist».
Для обработки изображений вместо библиотеки-обвязки sharp задействован модуль jimp (JavaScript Image Manipulation Program), написанный целиком на JavaScript.
Дополнительно сформирован новый выпуск WebTorrent Desktop 0.22, торрент-клиента, поддерживающего стриминг видео и позволяющего просматривать видео и звуковой контент не дожидаясь его полной загрузки, подгружая новые данные по мере необходимости. WebTorrent Desktop также позволяет менять позицию внутри ещё полностью не загруженных файлов (смена позиции автоматически меняет приоритет в загрузке блоков). Имеется возможность подключения как к браузерным-пирам на базе WebTorrent, так и к пирам BitTorrent, использующим типовые программы, такие как Transmission или uTorrent. Поддерживаются magnet-ссылки, torrent-файлы, определение пиров по DHT (Distributed Hash Table), PEX (Peer exchang) и спискам с серверов-трекеров. Поддерживается потоковое вещание с использованием протоколов AirPlay, Chromecast и DLNA.
Новая версия примечательна поддержкой многотрекового звука, улучшенным определением кодеков, уведомлением о верификации файлов, поддержкой форматов MPEG-Layer-2, Musepack, Matroska (звук) и WavePack, началом публикации rpm-пакетов для Linux и сборок для архитектуры arm64. Выпуск 0.22 построен на основе платформы Electron 9, но следом уже опубликовано обновление 0.23, в котором осуществлён переход на использование тестовой версии платформы Electron 10.
Напомним, что WebTorrent представляет собой расширение протокола BitTorrent, позволяющее организовать децентрализованную сеть распространения контента, функционирующую через связывание между собой браузеров пользователей, просматривающих контент. Проект не требует для работы внешней серверной инфраструктуры и браузерных плагинов. Для связывания посетителей сайтов в единую сеть доставки контента достаточно разместить на сайте специальный JavaScript-код, использующий для прямого обмена данными между браузерами технологию WebRTC.