Studio: microphone track is digital silence for the exact duration of a VoIP call, and the recording reports success
Maintainer thường phản hồi trong vòng 1 ngày
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 52/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- macos, rust
- Lĩnh vực
- audio-video-rtc, desktop
Hướng nghiên cứu
Bắt đầu với pipeline thu âm microphone và việc xử lý khoảng trống âm thanh/keepalive được mô tả trong các log, sau đó tái hiện vấn đề trên macOS trong một cuộc gọi VoIP. So sánh track microphone đã thu với timeout được ghi log và các sự kiện tiếp tục. Được xem là hoàn tất khi sự mất tín hiệu do cuộc gọi gây ra либо được tránh, либо được phát hiện và báo cáo rõ ràng, thay vì được ghi lại dưới dạng một track im lặng thành công.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
On macOS, if a VoIP call is active, a Studio recording's audio-input.m4a contains
silence for precisely the span of that call. The screen and system-audio tracks are
perfect. Cap's own log reports a healthy microphone pipeline from start to finish and
the recording completes normally, so nothing indicates the microphone was lost —
not the UI, not the log, not the file's duration or waveform length.
Two real recordings were lost this way before the cause was found by ear.
This appears to be the macOS defect Rogue Amoeba documents as "Lost Call Audio"
("audio could be lost in FaceTime, Facebook Messenger, WhatsApp, or the new Phone app").
They worked around it with an alternate capture method. The request here is that Cap
either route around it too, or — at minimum — detect it and say so.
Environment
- Cap 0.6.0, Studio mode, system audio on
- macOS 26.5.2 (Darwin 25.5.0), Apple Silicon
- Microphone: MacBook Pro Microphone (built-in). No Bluetooth involved — the
headset was disconnected and the built-in mic was the system default input - Input volume: 100
What happens
Recording B, 215 s, with a 3.5-minute call starting partway through. Non-zero sample
fraction and RMS per 5 s window of audio-input.m4a:
13:11:47 0s 3.99% non-zero -91.5 dBFS Cap started; call NOT yet connected
13:11:57 10s 5.16% non-zero -92.7 dBFS
13:12:02 15s 0.00% non-zero -240.0 dBFS <-- call connects. EXACT digital zero
... 190 seconds of exact zero ...
13:15:07 200s 0.00% non-zero -240.0 dBFS
13:15:12 205s 4.89% non-zero -90.8 dBFS <-- call ends. device returns
13:15:17 210s 4.13% non-zero -90.6 dBFS
The transition is not gradual and not a coincidence of timing: the zeros begin at
13:12:02 and end at 13:15:13, which match the call's own start and end to the second.
Recording A, 2252.885 s, entirely inside a call: 36,046,165 samples, 2,768 of them
non-zero — 0.008%, mean −91.0 dBFS.
A quiet room is not this. Quiet audio has a continuous noise floor; these are
exact zeros. The distinction matters because a level alone looks merely "quiet":
−91 dBFS and −56 dBFS both read as quiet and only one of them is a loss.
Cap reports success throughout
Microphone source configured device=MacBook Pro Microphone source_rate=44100
source_channels=1 source_format=F32(Packed) target_rate=48000
Start gate admitted first audio frame at the arm point held_frames=16 trimmed_samples=190
Microphone data timeout, awaiting delivery before keepalive silence is_wireless=false
Microphone data resumed after silence stall_ms=273 reconnect_attempts=0
Audio gap tracking summary silence_insertions=1 total_silence_ms=199
Task finished successfully
Cap notices a 273 ms stall at the moment the call connects, treats it as a transient,
inserts keepalive silence and carries on — for the next three minutes of zeros. In
recording A the same pattern produced one logged 199 ms gap across 37.5 minutes that
were entirely silent.
It is not the device, the permission, the format, or exclusivity
Each eliminated by measurement on the same machine, same device, same Cap build:
| hypothesis | measurement | result |
|---|---|---|
| Cap lacks mic permission | control recording via cap record start, no call: 99.404% non-zero, −46.2 dBFS |
works |
| device broken / muted | fresh capture after the call ended: 97.18% non-zero, −19.7 dBFS; input volume 100 | works |
| sample-rate mismatch | device native format read directly: 44100 Hz mono f32 — exactly what Cap logged | matches |
| mic can't have two clients | a second recorder capturing the same device over the same window got 479 and 36 transcribed segments | works |
| Cap opened the device too late | in recording B Cap was started before the call connected and still lost it | not ordering |
That fourth row is the useful one: another process recording the built-in microphone
concurrently, through a different capture path, kept receiving real audio for the whole
call while Cap received zeros. So the audio is still obtainable during a call — Cap's
capture path specifically is the one that gets starved.
Requests
- Do not report success on an all-zero microphone track. A cheap end-of-recording
check — non-zero sample fraction over the mic track — would have caught both of these
at the moment they happened instead of days later. A warning in the UI, or a flag in
recording-meta.json, would be enough. - Treat a sustained keepalive-silence run as an error condition, not a transient.
The log already knows: "Microphone data timeout" fired at the exact second the loss
began. Right now that becomes an INFO "resumed" line and the loss continues silently. - Consider the alternate capture path that Rogue Amoeba adopted for this same macOS
defect, given a concurrent recorder demonstrably keeps working during the call.
Happy to supply the full logs, the per-window measurements, or to test a build.
- Ngôn ngữ chính
- Rust
- Star
- 23k
- Fork
- 2k
- Merge trung bình
- 19 giờ 50 phút
- Pull request đã merge (30 ngày)
- 72
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của CapSoftware/Cap
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
CapSoftware/Cap#2384 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Dashboard pagination causes full page reloads on self-hosted CapCó thể đã có người làm @Dewin đã nhận 18 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
CapSoftware/Cap#2305 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
CapSoftware/Cap#1714 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
CapSoftware/Cap#2409 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 64/100
CapSoftware/Cap#2408 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của CapSoftware/Cap
Issue tương tự
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
zcashlabs/thus-spoke-zakura#153 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
app bug windows-os
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 67/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Improve sublime text syntaxĐang mởeditor good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
funnyboy-roks/inq#54 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
pnpm/pnpm#16635 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug]: Bedrock request metadata forwarding does not work for /embeddingsCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mởbug llm translation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày