Темы



Выпуск FluxCast 0.3.0, инструмента для трансляции рабочего стола Linux на Smart TV

Коротко сгенерировано ИИ по тексту статьи
  • FluxCast 0.3.0 добавляет окно настроек из трея и APT-репозиторий для Debian и Ubuntu с обновлением пакета вместе с системой.
  • При аппаратном кодировании VA-API нагрузка на статичной картинке снижается с 80% до 1%, а задержка — с 64 до 27 мс; проверено только на Intel.
  • Опциональный режим WFD R2 открывает телевизору LG C2 режим 1080p60, недоступный в списке R1; по умолчанию он выключен.

Почему это важно: Для повседневной работы с программой больше не нужен терминал.

1000px.jpg

Состоялся выпуск проекта FluxCast v0.3.0, предназначенного для организации стриминга рабочего стола Linux на экраны Smart TV по протоколам Wi-Fi Direct (Miracast), DLNA и Chromecast с минимальной задержкой. Исходный код проекта написан на Python и распространяется под лицензией GPLv3.

Ключевое изменение версии 0.3.0 в том, что для повседневной работы с программой больше не нужен терминал: появились окно настроек в трее, а для Debian и Ubuntu собственный APT-репозиторий.

Основные изменения:

  • Запущен APT-репозиторий apt.fluxcast.dev. Раньше .deb-пакеты лежали только на страницах релизов GitHub, и каждое обновление приходилось скачивать руками. Теперь ставится пакет fluxcast-repo, который добавляет в систему ключ подписи и файл с параметрами репозитория, после чего FluxCast обновляется вместе с остальной системой. Кодовое имя дистрибутива выбирать не нужно: сборка определяется по минорной версии 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, весь конвейер обработки работает без копирования в системную память. По приведённым в релизе замерам, на статичной картинке нагрузка падает с 80% до 1% от одного ядра, при движении с 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, используется первая редакция. По умолчанию выключено и пока проверено на одной модели телевизора.

Исправления:

  • --doctor сообщал об отсутствии iw и wpa_cli, если те лежат в /usr/sbin, которого нет в PATH обычного пользователя в Debian и Ubuntu. Ошибка задевала не только вывод отчёта, но и определение беспроводного интерфейса в бэкенде wpas.

  • --doctor считал систему готовой к трансляции, когда в ней оставался незакрытый интерфейс Wi-Fi Direct от прерванного сеанса. Теперь выводится предупреждение со списком таких интерфейсов и командой для удаления каждого.

  • Остановка трансляции из трея оставляла сессию недоразобранной: в коде WFD не был обработан SIGTERM, поэтому процесс завершался без освобождения ресурсов, а приёмнику не сообщалось об окончании сеанса.

  • Устранено искажение пропорций и зависание до 9 секунд при изменении размера окна в режиме захвата отдельного окна в KDE.

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

Добавлен турецкий перевод. Всего поддерживается десять языков, язык выбирается по системной локали. Файлы перевода разнесены по отдельному файлу на каждый язык.

Отдельно будут полезны отзывы о работе VA-API на видеокартах AMD и NVIDIA.

>>> Подробности релиза на GitHub

©  Linux.org.ru