Технологии, наука и безопасность своими словами

Технологии

FluxCast 0.3.0: трансляция рабочего стола Linux на телевизоры стала проще и быстрее

Состоялся релиз FluxCast 0.3.0 — программы на Python, которая передаёт изображение с рабочего стола Linux на телевизоры по протоколам Miracast, DLNA и Chromecast. Код распространяется под лицензией 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 вручную. Теперь через графический интерфейс на Tkinter можно менять 20 параметров для Miracast и по 8 для DLNA и Chromecast. Вводимые значения проверяются теми же обработчиками, что и при чтении конфигурации, а пользовательские комментарии в файле не теряются при сохранении.

Окно автоматически подстраивается под светлую или тёмную тему оформления системы. Ключевое новшество — поддержка аппаратного кодирования видео через VA-API. Она включается параметром "--wfd-encoder va" и задействует элемент vah264enc.

Если композитный сервер передаёт кадры в виде DMABuf, конвейер "pipewiresrc - vapostproc - vacompositor - кодировщик" обрабатывает данные без копирования в системную память. В тестах на GPU Intel при трансляции статичного изображения нагрузка на процессор упала с 80% до 1% от одного ядра, при движении — с 73–79% до 6–7%, а задержка от изменения на экране до попадания кадра в кодировщик сократилась с 64 до 27 мс. По умолчанию по-прежнему работает программный кодировщик x264, на который система переключается автоматически, если нужные элементы VA-API отсутствуют.

Управление битрейтом задаётся через "--wfd-rate-control", по умолчанию используется режим qvbr. Добавлена опциональная поддержка согласования режимов второй редакции спецификации WFD R2. При активации параметром "--wfd-r2" в запросе M3 дополнительно запрашиваются списки wfd2_video_formats и wfd2_audio_codecs.

Это открывает доступ к режимам, которые приёмник публикует только в рамках R2. Например, на телевизорах LG C2 становится доступен режим 1080p60, отсутствовавший в списке первой редакции, из-за чего запрос 60 кадров в секунду раньше приводил к откату на 1080p30. Если приёмник не поддерживает или отклоняет параметры R2, выполняется возврат к первой редакции.

Пока функция проверена на одной модели телевизора и отключена по умолчанию. Исправлен ряд ошибок. Утилиты iw и wpa_cli больше не считаются отсутствующими, если они лежат в /usr/sbin — этот каталог не входит в PATH непривилегированного пользователя в Debian и Ubuntu, что раньше мешало не только выводу режима "--doctor", но и определению беспроводного интерфейса.

Сам режим "--doctor" теперь предупреждает о незакрытых интерфейсах Wi-Fi Direct, оставшихся после прерванных сеансов, и показывает команды для их удаления. В код WFD-сессии добавлен обработчик SIGTERM, чтобы остановка трансляции из трея корректно освобождала ресурсы и уведомляла приёмник. Устранено искажение пропорций и зависание до 9 секунд при изменении размера окна в сеансах захвата отдельных окон в KDE.

Число потоков кодировщика x264 теперь ограничено значением min(4, количество ядер CPU). В режиме "tune=zerolatency" кодировщик создаёт по одному слайсу на поток, и на системах с 16 ядрами это приводило к избыточному дроблению кадра и росту нагрузки примерно на треть. Интерфейс переведён на турецкий язык, общее число поддерживаемых языков достигло десяти.

Файлы локализации теперь разделены по языкам, что упрощает их поддержку.

открытый код стриминг приложения

Оригинал

Обсуждение

Комментариев пока нет.

Похожие новости