You record a great take on your Mac. On playback, the audio stutters, drifts out of sync, or entire words are just gone. The video is fine, so the recording “worked”, but the take is ruined.

We hit this while building KeepTake, our webcam recorder, and it took real digging to find the causes. There are two separate problems, and they compound each other. This post explains both and what to do about them.

Problem 1: the capture pipeline silently drops mic audio

Many recording tools on macOS, including anything built on stock ffmpeg, capture the microphone through ffmpeg’s avfoundation input. In our testing, that path silently drops between 10% and 25% of microphone audio.

The symptom is not a clean gap you would notice immediately. Dropped buffers make the audio track shorter than the video track, so players and editors stretch or slip it, and you get audio that drifts progressively out of sync, with occasional missing syllables. On a short clip you might not notice. Over a 30-minute recording, the drift becomes seconds, and the take is unusable.

Why does this happen? Audio capture is a real-time contract: the OS hands the application small buffers of samples at a fixed rate, and the application must collect every one, on time, forever. The avfoundation capture path in ffmpeg does not service that contract reliably under load. When the encoder, the disk, or the UI thread gets busy, buffers get missed, and missed buffers are simply gone. Nothing errors. The recording continues, shorter on audio than it should be.

The infuriating part is the silence of the failure. No warning, no log line, just a file with less audio than reality.

How KeepTake fixes it

We stopped using ffmpeg’s built-in macOS audio capture entirely. KeepTake bundles its own small audio capture helper built directly on Core Audio’s AUHAL, the low-level unit Apple provides for device capture. It does nothing but service the microphone with real-time priority and hand perfectly continuous audio to the recording pipeline, synchronized with the video stream at start.

The result is boring in the best way: audio that is exactly as long as the video, every time, for hours. We have not lost a syllable since.

If you use a different tool and see drifting or missing audio, the honest fix options are limited, because the bug lives in the tool’s capture path, not in your settings. Recording audio separately in a dedicated audio app and syncing in post works, but it is exactly the kind of workflow the recorder was supposed to save you from.

Problem 2: the Continuity mic hijack

The second trap is a macOS feature working as designed, against you. When your iPhone is nearby and signed into the same Apple ID, macOS can present it as a camera and microphone through Continuity. The trap: macOS will often make the iPhone the default input device the moment it appears.

Recording apps that just use “the default microphone” will happily record from your iPhone, which might be face down on a couch across the room. You think you recorded with your good desk mic. You actually recorded muffled room audio from a phone speaker-distance away. Sometimes the phone locks or moves out of range mid-recording, and the audio device disappears entirely.

The fix

Check your input device every time you record, or use a tool that does not blindly follow the system default. In macOS System Settings, under Sound, then Input, you can see what the current default is. If your iPhone is listed and selected, that is your problem.

KeepTake sidesteps the trap by resolving the actual OS default input device and showing you by name exactly which microphone it will record, rather than silently following whatever device macOS most recently promoted. If you want a different mic, you pick it explicitly, and the choice sticks.

A quick pre-flight checklist

Whatever software you use, this 60-second routine catches nearly every audio failure before it costs you a take:

  1. Record 30 seconds with the exact setup you will use for the real thing.
  2. Play it back with headphones and listen to the start and the end.
  3. Confirm the mic name in the app matches the mic you think you are using.
  4. If your iPhone is nearby, confirm it has not become the input device.
  5. For long takes, check that audio is still in sync at the end of a longer test, not just the start.

Step 5 is the one people skip, and it is the only one that catches gradual mic-audio drop, because the drift accumulates over time.

The bigger point

Audio failures are the worst kind of recording failure because they are silent and discovered late. A recorder’s real job is not just producing a file; it is guaranteeing the file contains what happened. That principle drove most of KeepTake’s design, including the crash-safety machinery we wrote about separately, and the same it-must-not-lie attitude applies to choosing a recording format.

If you record on a Mac and your audio has ever gone missing, it almost certainly was not your fault. It was one of these two traps. Now you know where they are.