FluxCast 0.3.0: разработчики добавили APT-репозиторий, VA-API и новый интерфейс настроек
Проект FluxCast, позволяющий выводить рабочий стол Linux на Smart TV через Wi-Fi Direct (Miracast), DLNA и Chromecast с небольшой задержкой, получил версию 0.3.0. Код написан на 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 ядрах кадр дробился избыточно, а нагрузка росла примерно на треть. Интерфейс переведён на турецкий, всего языков стало десять, файлы локализации разнесены по отдельным языкам.
