From ab1a163281e11d2fa8576870dad7b6b2c126c304 Mon Sep 17 00:00:00 2001 From: webadderall <131426131+webadderall@users.noreply.github.com> Date: Wed, 18 Mar 2026 21:00:09 +1100 Subject: [PATCH] fix: re-release v1.1.1 mic capture + hud position --- electron/ipc/handlers.ts | 64 ++++++++++++++---- .../native/ScreenCaptureKitRecorder.swift | 2 +- .../openscreen-screencapturekit-helper | Bin 188912 -> 188912 bytes electron/windows.ts | 2 +- 4 files changed, 53 insertions(+), 15 deletions(-) diff --git a/electron/ipc/handlers.ts b/electron/ipc/handlers.ts index 5db60fd4..8cce8eb4 100644 --- a/electron/ipc/handlers.ts +++ b/electron/ipc/handlers.ts @@ -1113,25 +1113,63 @@ function waitForNativeCaptureStop(process: ChildProcessWithoutNullStreams) { }) } +async function fileHasAudioStream(filePath: string) { + const ffmpegPath = getFfmpegBinaryPath() + + try { + await execFileAsync( + ffmpegPath, + ['-i', filePath], + { timeout: 30000, maxBuffer: 10 * 1024 * 1024 }, + ) + } catch (error) { + const stderr = typeof error === 'object' && error !== null && 'stderr' in error + ? String((error as { stderr?: unknown }).stderr ?? '') + : '' + + if (stderr) { + return /Audio:/i.test(stderr) + } + } + + return false +} + async function mixNativeMacAudioTracks(videoPath: string, microphonePath: string) { const ffmpegPath = getFfmpegBinaryPath() const mixedOutputPath = `${videoPath}.mixed.mp4` + const videoHasAudio = await fileHasAudioStream(videoPath) + + const args = videoHasAudio + ? [ + '-y', + '-i', videoPath, + '-i', microphonePath, + '-filter_complex', '[0:a][1:a]amix=inputs=2:duration=longest:normalize=0[aout]', + '-map', '0:v:0', + '-map', '[aout]', + '-c:v', 'copy', + '-c:a', 'aac', + '-b:a', '192k', + '-shortest', + mixedOutputPath, + ] + : [ + '-y', + '-i', videoPath, + '-i', microphonePath, + '-map', '0:v:0', + '-map', '1:a:0', + '-c:v', 'copy', + '-c:a', 'aac', + '-b:a', '192k', + '-shortest', + mixedOutputPath, + ] await execFileAsync( ffmpegPath, - [ - '-y', - '-i', videoPath, - '-i', microphonePath, - '-filter_complex', '[0:a][1:a]amix=inputs=2:duration=longest:normalize=0[aout]', - '-map', '0:v:0', - '-map', '[aout]', - '-c:v', 'copy', - '-c:a', 'aac', - '-b:a', '192k', - '-shortest', - mixedOutputPath, - ], + args, { timeout: 120000, maxBuffer: 10 * 1024 * 1024 }, ) diff --git a/electron/native/ScreenCaptureKitRecorder.swift b/electron/native/ScreenCaptureKitRecorder.swift index 89cd4c93..0b2c521e 100644 --- a/electron/native/ScreenCaptureKitRecorder.swift +++ b/electron/native/ScreenCaptureKitRecorder.swift @@ -82,7 +82,7 @@ final class ScreenCaptureRecorder: NSObject, SCStreamOutput, SCStreamDelegate { streamConfig.queueDepth = 6 streamConfig.pixelFormat = kCVPixelFormatType_32BGRA streamConfig.showsCursor = false - streamConfig.capturesAudio = capturesSystemAudio + streamConfig.capturesAudio = capturesSystemAudio || capturesMicrophone streamConfig.sampleRate = 48000 streamConfig.channelCount = 2 streamConfig.excludesCurrentProcessAudio = true diff --git a/electron/native/bin/darwin-arm64/openscreen-screencapturekit-helper b/electron/native/bin/darwin-arm64/openscreen-screencapturekit-helper index 1c5df9e37d4e837336c4285d4c0eafcb816ebe8e..54c53d952b58b7e93b445a95b9ed59027ca79816 100755 GIT binary patch delta 15255 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 delta 15204 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 HvYY-NSm)%& diff --git a/electron/windows.ts b/electron/windows.ts index 05b35dff..4c21241a 100644 --- a/electron/windows.ts +++ b/electron/windows.ts @@ -22,7 +22,7 @@ let hudOverlayCaptureProtectionLoaded = false; let countdownWindow: BrowserWindow | null = null; const HUD_OVERLAY_SETTINGS_FILE = path.join(app.getPath("userData"), "hud-overlay-settings.json"); -const HUD_BOTTOM_CLEARANCE_CM = 7; +const HUD_BOTTOM_CLEARANCE_CM = 3.5; const DIP_PER_INCH = 96; const CM_PER_INCH = 2.54; const HUD_EDGE_MARGIN_DIP = 16;