Skip to content

Brix 0.2.0-beta

Pre-release
Pre-release

Choose a tag to compare

@0rb1ta 0rb1ta released this 03 Oct 22:07
· 1 commit to main since this release

English · Русский

Before you update

Nothing to do. The APK is signed with the same key as before and installs over
0.1.x, keeping your settings. Audio settings that older versions stored per stream
profile are moved into the shared audio settings once, on first launch.

What's new

A first-run wizard. On a fresh install the app no longer opens straight into an
empty stream screen. A portrait wizard walks through language, permissions, a server
(or importing one from a brix://, moblin:// or larix:// link) and quality.

Settings offer only what your phone can actually do. At startup the app asks the
hardware which encoders, resolutions and frame rates it supports. Modes your phone
cannot do are not offered, instead of failing on air.

Microphone level meter. Two small vertical bars (left and right channel) sit above
the corner button slot, where most people keep the mute button. They turn red on
clipping and grey while muted. It can be turned off in Settings → Appearance → HUD.

Donation services beyond DonationAlerts. DonatePay, iHAQ, Donatty and donate.stream
widgets are recognised by their address, and the HUD shows a small label per service
that lights up when the widget is actually connected to its server.

Chat emotes. Twitch and Kick emotes are shown as images. 7TV and BetterTTV emotes are
behind a separate switch, because they mean requests to third-party services.

Stop button. Holding Stop now shows a progress ring that starts from the bottom edge,
the colour change and label are animated together, and the phone vibrates on start,
on success and on early release — so you can tell the outcome without looking.

Settings, easier to use on the move. Rows show their current value; every row is at
least 48 dp tall and the whole row toggles a switch; switches are the standard system
ones; number fields open a numeric keyboard; an empty or malformed server address can
no longer be saved silently; "Delete server" is red.

WHIP to http:// servers works. Android blocks unencrypted HTTP by default, so a
WHIP address starting with http:// (MediaMTX's default, a server at home) failed
immediately. It is now allowed — just like RTMP, which never was encrypted — and the
server editor warns that such an address and token travel in the clear.

Fixed

  • Bonding did not come up when the first link to connect was dead — for example a
    cellular network whose operator blocks UDP, while Wi-Fi worked. Registration was only
    attempted through that one link. Every link now tries, and the first to answer wins.
  • The "Reconnect" button left an SRTLA stream stuck in "reconnecting": the stream
    kept going, but the clock stopped, and the next real drop no longer triggered an
    automatic reconnect.
  • Only three of the five reconnect attempts were actually made — one failed
    attempt was counted several times.
  • Plain srt:// died when you walked away from Wi-Fi, even with cellular working:
    the second network was discarded at start and never used. It now takes over.
  • A link that failed to reconnect could spin one CPU core at 100% until the end of
    the stream, and stayed dead.
  • Mute did not mute the microphone in the "microphone + phone audio" scene, and
    switching scenes un-muted a muted microphone.
  • A broken donation image could crash the app on air.
  • Camera and audio settings changed during a stream (stabilisation, mirroring,
    microphone gain) now apply immediately instead of after Stop → Start.
  • The mascot redrew the whole screen 60 times a second for the entire stream — more
    CPU than our whole network transport. It now only moves briefly on events.
  • Privacy: the server address no longer appears in exported diagnostics logs; the
    name of your headset no longer travels in config links or diagnostics; "Source" in
    About now points to the public repository.
  • Chat: Kick chat answers the server's keep-alive and no longer reconnects every couple
    of minutes in a quiet channel.

Under the hood: RootEncoder 2.8.1, Kotlin 2.4, current AndroidX, OkHttp 5, Glide 5.

Still a beta

Everything we know about the app's behaviour still comes from one Samsung S21. There are
no external device reports yet — Settings → About → Device passport collects one and is
the main way to lift that limit.

This release was checked on that phone with an automated test bench — SRTLA, a manual
reconnect, 5% packet loss, a 10-second outage, Wi-Fi switched off and back, plain SRT,
RTMP, WHIP, mute, MP4 recording — including the release-type build. Not verified:

  • WHIP sometimes fails to connect (2 of 4 attempts on the bench): the server accepts
    the request but the media connection does not come up. If it happens, press Start
    again. We are looking into it.
  • Bonding over a real cellular network — the bench has only one network link.
  • Donations from DonatePay and iHAQ have not been seen with a real donation.
  • Twitch sign-in is hidden until the app is registered with Twitch. Kick sign-in
    needs your own Kick developer app (Client ID and Secret, like VK).
  • A Bluetooth headset microphone is listed but the app does not switch the headset into
    call mode, so recording stays on the built-in microphone.

Installing

Android 10 or newer. Signed with the same key as previous releases, so it installs over
them.

sha256: 3c9f0a6eea35354df30a5e1b06d1e009cb52c55e13e372992ede98fb883d3922



Русский · English

Перед обновлением

Ничего делать не нужно. Подпись та же, обновление встаёт поверх 0.1.x с сохранением
настроек. Звук, который старые версии хранили в каждом профиле стрима, при первом
запуске один раз переносится в общие настройки звука.

Что нового

Мастер первого запуска. При чистой установке приложение больше не открывает сразу
пустой экран эфира. Портретный мастер проводит по шагам: язык, разрешения, сервер (или
импорт по ссылке brix://, moblin://, larix://) и качество.

Настройки предлагают только то, что умеет ваш телефон. При запуске приложение
спрашивает железо, какие энкодеры, разрешения и частоты кадров оно поддерживает.
Недоступные режимы не предлагаются, вместо того чтобы падать в эфире.

Индикатор уровня микрофона. Две вертикальные полоски — левый и правый канал — над
угловым слотом быстрых кнопок, куда обычно ставят мьют. Краснеют при перегрузке,
сереют при мьюте. Выключается в Настройки → Внешний вид → HUD.

Донат-сервисы помимо DonationAlerts. Виджеты DonatePay, iHAQ, Donatty и donate.stream
опознаются по адресу, в HUD у каждого сервиса своя метка, которая горит, когда виджет
действительно подключён к своему серверу.

Эмодзи в чате. Эмодзи Twitch и Kick показываются картинками. 7TV и BetterTTV —
отдельным переключателем: это запросы к сторонним сервисам.

Кнопка «Стоп». При удержании видно кольцо прогресса от нижней грани, смена цвета и
подписи идут вместе, плюс вибрация на начало, на срабатывание и на отпускание раньше
времени — результат понятен, не глядя на экран.

Настройки удобнее на ходу. В строках видно текущее значение; строки не ниже 48 dp и
переключаются целиком; переключатели системные; числовые поля открывают цифровую
клавиатуру; пустой или битый адрес сервера больше не сохраняется молча; «Удалить сервер»
— красная.

WHIP на серверы http:// работает. Android по умолчанию запрещает HTTP без
шифрования, и адрес WHIP вида http:// (MediaMTX по умолчанию, сервер дома) сразу
падал. Теперь разрешено — как у RTMP, который всегда был без шифрования, — а редактор
сервера предупреждает, что такой адрес и токен идут открыто.

Исправлено

  • Бондинг не поднимался, если первым подключился мёртвый канал — например, сота,
    у которой оператор режет UDP, при работающем Wi-Fi. Регистрация шла только через этот
    канал. Теперь пробуют все, побеждает первый ответивший.
  • Кнопка «Переподключить» оставляла SRTLA-эфир в «переподключении»: поток шёл, но
    часы стояли, и при следующем настоящем обрыве автопереподключение не срабатывало.
  • Из пяти попыток переподключения выполнялись три — одна неудачная попытка
    засчитывалась несколько раз.
  • Обычный srt:// умирал при уходе с Wi-Fi, хотя сота работала: вторая сеть
    отбрасывалась на старте и не использовалась. Теперь эфир переезжает на неё.
  • Канал, не сумевший переподключиться, мог занимать ядро на 100% до конца эфира и
    оставался мёртвым.
  • Мьют не глушил микрофон в сцене «микрофон + звук телефона», а смена сцены
    открывала выключенный микрофон.
  • Битая картинка доната могла уронить приложение в эфире.
  • Настройки камеры и звука, изменённые во время эфира (стабилизация, зеркало,
    усиление микрофона), применяются сразу, а не после Стоп → Старт.
  • Маскот перерисовывал весь экран 60 раз в секунду всё время эфира — больше
    процессора, чем весь наш сетевой транспорт. Теперь двигается только коротко на
    события.
  • Приватность: адрес сервера больше не попадает в выгрузку диагностики; имя
    гарнитуры не уезжает в ссылку с настройками и диагностику; «Исходники» в «О
    приложении» ведут на публичный репозиторий.
  • Чат: Kick отвечает серверу на проверку связи и не переподключается каждые пару минут
    в тихом канале.

Внутри: RootEncoder 2.8.1, Kotlin 2.4, свежие AndroidX, OkHttp 5, Glide 5.

По-прежнему бета

Всё, что мы знаем о поведении приложения, по-прежнему получено на одном Samsung S21.
Внешних отчётов пока нет — Настройки → О приложении → Паспорт устройства собирает такой
отчёт, и это главный способ снять ограничение.

Этот выпуск проверен на том телефоне автоматическим стендом — SRTLA, ручное
переподключение, 5% потерь, обрыв на 10 секунд, выключение и включение Wi-Fi, обычный
SRT, RTMP, WHIP, мьют, запись MP4 — в том числе на сборке релизного типа. Не проверено:

  • WHIP иногда не подключается (2 попытки из 4 на стенде): сервер принимает запрос,
    но медиасоединение не встаёт. Если случилось — нажмите «Старт» ещё раз. Разбираемся.
  • Бондинг через настоящую сотовую сеть — у стенда один сетевой канал.
  • Донаты DonatePay и iHAQ на настоящем донате не проверялись.
  • Вход в Twitch скрыт, пока приложение не зарегистрировано в Twitch. Вход в Kick
    требует своего приложения разработчика Kick (Client ID и Secret, как для VK).
  • Микрофон Bluetooth-гарнитуры в списке есть, но приложение не переводит гарнитуру в
    режим разговора, поэтому запись остаётся на встроенном микрофоне.

Установка

Android 10 или новее. Подпись та же, что у прошлых версий, — ставится поверх.

sha256: 3c9f0a6eea35354df30a5e1b06d1e009cb52c55e13e372992ede98fb883d3922