|
Состоялся релиз проекта FluxCast 0.3.0, предназначенного для организации стриминга рабочего стола Linux на экраны Smart TV по протоколам Wi-Fi Direct (Miracast), DLNA и Chromecast с минимальной задержкой. Исходный код проекта написан на Python и распространяется под лицензией GPLv3.
Среди изменений:
- Для дистрибутивов Debian и Ubuntu запущен собственный APT-репозиторий. Ранее deb-пакеты прикреплялись только к страницам выпусков на GitHub, и для обновления требовалось вручную отслеживать новые релизы и загружать сборку, соответствующую своей версии дистрибутива. Подключение репозитория сводится к установке пакета fluxcast-repo, добавляющего в систему ключ для проверки цифровой подписи и файл с параметрами репозитория. Подходящая сборка определяется автоматически по версии python3, а не по кодовому имени дистрибутива, что позволяет корректно обслуживать производные сборки, такие как Linux Mint и Pop!_OS, а также промежуточные
выпуски Ubuntu. Поддерживаются Debian 12 и 13, Ubuntu 24.04 и 26.04, архитектура amd64. Подписывание индексов выполняется на стороне GitHub Actions, закрытый ключ на сервере не размещается. Ранее опубликованные версии остаются доступны, что даёт возможность отката.
- Реализовано окно настроек, вызываемое из меню в системном трее. Ранее изменение параметров требовало ручного редактирования файла ~/.config/fluxcast/config. В интерфейсе доступны 20 параметров для Miracast и по 8 для DLNA и Chromecast.
Вводимые значения проверяются теми же обработчиками, которые применяются при чтении конфигурации, а комментарии, добавленные пользователем в файл, сохраняются при записи. Окно построено с использованием Tkinter и учитывает выбранную в системе светлую или тёмную тему оформления.
- Добавлена возможность аппаратного кодирования видео через VA-API, включаемая параметром "--wfd-encoder va" и задействующая элемент vah264enc. В конфигурациях, где композитный сервер передаёт кадры в виде DMABuf, конвейер "pipewiresrc - vapostproc -
vacompositor - кодировщик" обрабатывает данные без копирования в системную память. В проведённых тестах при трансляции статичного изображения нагрузка
снизилась с 80% до 1% от одного ядра CPU, при наличии движения с 73-79% до 6-7%, а задержка от изменения на экране до поступления кадра в кодировщик сократилась с 64 до 27 мс. Тестирование проводилось только на GPU Intel. По умолчанию по-прежнему
применяется программный кодировщик x264, переключение на который выполняется автоматически при отсутствии необходимых элементов VA-API. Режим управления битрейтом задаётся параметром "--wfd-rate-control", по умолчанию используется qvbr.
- Добавлена опциональная поддержка согласования режимов WFD R2, активируемая параметром "--wfd-r2". При её включении в запросе M3 дополнительно запрашиваются списки wfd2_video_formats и wfd2_audio_codecs, что открывает доступ к режимам, публикуемым
приёмником только в рамках второй редакции спецификации. Например, на телевизорах LG C2 становится доступен режим 1080p60, отсутствующий в списке R1, из-за чего запрос 60
кадров в секунду ранее приводил к откату на 1080p30. Если приёмник не поддерживает
или отклоняет параметры R2, выполняется возврат к первой редакции. Возможность
отключена по умолчанию и пока проверена на одной модели телевизора.
- Устранено ошибочное определение утилит iw и wpa_cli как
отсутствующих, если они размещены в каталоге /usr/sbin, не входящем в PATH
непривилегированного пользователя в Debian и Ubuntu (ошибка затрагивала не только
вывод режима "--doctor", но и определение беспроводного интерфейса в бэкенде wpas).
- Режим "--doctor" теперь выводит предупреждение при наличии незакрытых интерфейсов
Wi-Fi Direct, оставшихся от прерванных сеансов, и приводит команды для их удаления.
- В коде WFD-сессии реализован обработчик сигнала SIGTERM (ранее остановка трансляции из трея приводила к завершению процесса без освобождения ресурсов и уведомления приёмника).
- Устранено искажение пропорций и зависание продолжительностью до 9 секунд при изменении размера окна в сеансах захвата отдельных окон в KDE.
- Число потоков кодировщика x264 ограничено значением min (4, число CPU), так как в режиме "tune=zerolatency" кодировщик создаёт по одному слайсу на поток, что на системах с 16 ядрами приводило к избыточному дроблению кадра и росту нагрузки примерно на треть.
- Интерфейс переведён на турецкий язык, общее число поддерживаемых языков доведено до
десяти. Файлы локализации разделены на отдельные файлы для каждого языка.
|