logo
Hello World!

BetaHub Recorder

26 czerwca 2025 (Updated: 4 lipca 2025)
electrontypescriptreactbetahub

Aplikacja desktopowa do nagrywania gameplay'u z komentarzem głosowym, uzupełniająca tradycyjne metody testowania gier.

Projekt powstał w połowie 2025 roku jako aplikacja desktopowa do nagrywania gameplay'u z komentarzem głosowym. Aplikacja uzupełnia tradycyjne metody testowania gier, dodając wizualny i dźwiękowy kontekst do tekstowych raportów błędów.



  • Uwierzytelnianie: Logowanie przez deep link z przeglądarki
  • Konfiguracja: Wybór ekranu, źródła dźwięku i projektu na platformie BetaHub
  • Nagrywanie: Nagrywanie z wykorzystaniem FFmpeg
  • Upload: Wysyłanie na platformę BetaHub ze śledzeniem postępu
  • Cross-platform: Windows, macOS, Linux
  • Nagrywanie ekranu: Z dźwiękiem mikrofonu
  • Upload z dysku: Możliwość wysyłania istniejących plików
  • Obsługa błędów: Wyświetlanie jako toasty

Electron, React + TypeScript, FFmpeg

Architektura Electron z podziałem na proces główny (nagrywanie, upload) i proces renderujący (UI), komunikacja przez IPC.

Często, gdy ekran jest fizycznie mały, ale posiada dużą rozdzielczość, aplikowane jest na niego skalowanie, aby poprawić czytelność. Aplikacja posiada funkcję, odczytującą poziom skalowania i dostosowuje poprawną rozdzielczość nagrywania. Bez tego, nagranie byłoby niepoprawnie wycięte.

Aplikacja ma działać głównie w systemie Windows, ale jest wieloplatformowa. Inne systemy, mimo że nie priorytetowo, są obsługiwane. W związku z tym, istnieje kilka rozwiązań specyficznych dla danych systemów.

Windows:

  • Automatyczne zarządzanie paskiem postępu w pasku zadań
  • Bogate API dla urządzeń audio DirectShow
  • Przechwytywanie ekranu GDI z przyspieszeniem sprzętowym

macOS:

  • Ograniczone opcje audio (tylko dźwięk systemowy)
  • Ręczne zarządzanie postępem w dock
  • Przechwytywanie ekranu AVFoundation

Linux:

  • Przechwytywanie ekranu X11/Wayland
  • Urządzenia audio PulseAudio/ALSA
  • Brak natywnego paska postępu

Jest to problem występujący głównie w systemie Windows. Gdy użytkownik po logowaniu jest przekierowywany z powrotem do aplikacji, tworzy się nowa instancja. Aplikacja wykorzystuje mechanizm requestSingleInstanceLock() do zapewnienia, że działa tylko jedna instancja.

BetaHub Recorder to aplikacja desktopowa, która uzupełnia tradycyjne metody testowania gier, dodając wizualny i dźwiękowy kontekst do tekstowych raportów błędów.

Kompatybilność wieloplatformowa: Każdy system operacyjny wymagał specjalnego podejścia - Windows (GDI + DirectShow), macOS (AVFoundation + Core Audio), Linux (X11/Wayland + PulseAudio/ALSA).

Skalowanie rozdzielczości: Automatyczne wykrywanie poziomu skalowania systemowego i dostosowanie rozdzielczości nagrywania.

Single instance: Blokada pojedynczej instancji aplikacji przy logowaniu przez deep link.

Projekt wzbogacił moje doświadczenie w pracy z Electron, nauczył mnie przetwarzania multimediów przez FFmpeg i tworzenia abstrakcji wieloplatformowych. Rozszerzył moje umiejętności w rozwoju aplikacji desktopowych i integracji z systemami operacyjnymi.

©2025 BatStack