Unsere Desktop-App erfasst Meetings ohne Bot und streamt sie in die Cloud. Monatelang war die Recording-Engine der schwierigste Teil des Produkts, um ihn zuverlässig zu machen. Wir haben eine Klasse von Randfällen behoben, ausgeliefert – und in der nächsten Woche tauchte ein neuer auf. Unterschiedliche Ursachen, dasselbe Muster. Die Engine lief im Render-Prozess unserer Electron-App. Wir haben die naheliegenden Fixes versucht: strengeres Lifecycle-Management, Verlagerung der Arbeit vom Main-Thread und Isolierung vom Render-Zyklus von React. Jede Änderung half am Rand, aber keine adressierte das eigentliche Problem. Ein Render-Prozess ist der falsche Ort für Echtzeit-Audio- und Videoaufnahme. Eine Capture-Engine kann GC-Pausen, Drosselung oder alles andere, was eine Browser-Runtime tut, um reaktionsschnell zu bleiben, nicht tolerieren.
Also gingen wir nativ: Screen Capture Kit auf macOS, libobs auf Windows und eine gemeinsame Swift-Schicht, die alles verbindet. Eine native Runtime an React anzubinden bedeutet normalerweise, Native-Addon-Bindings von Hand zu schreiben. Was wäre, wenn jede @Published-Eigenschaft in Swift automatisch zu einem Jotai-Atom in React würde? Genau das macht unser internes Tool Atomic.
Auf macOS empfangen wir rohe Sample-Buffer aus drei unabhängigen Quellen und setzen die Datei selbst zusammen. Auf Windows laufen Capture, Mixing, Encoding und Muxing als ein einziger Graph. Wir verwenden Windows Graphics Capture (WGC) als primäre Methode, und wenn sie Frames nicht rechtzeitig liefert, fallen wir auf Bit Blt zurück. Wir erkennen auch komplett schwarze Frames und wechseln mitten in der Aufnahme die Methode.
Ein Absturz in Minute 30 verliert höchstens die letzte Sekunde. Segmente gehen gleichzeitig in den lokalen Speicher und in die Cloud. Fällt das Netzwerk aus, bleiben die Segmente lokal erhalten und der Upload setzt automatisch fort, sobald die Verbindung zurückkehrt. Desktop-Aufnahmen waren früher eine unserer häufigsten Quellen für Support-Tickets. Jetzt ist es ein langweiliger Teil der App, der einfach funktioniert.
Quelle: Hacker News · Zusammengefasst von HeadlinesBriefing