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 weeks to work out why. There turned out to be two separate problems, and they compound each other.

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.

The cause is a missed real-time deadline. Audio capture is a contract: the OS hands the application small buffers of samples at a fixed rate, and the application has to collect every one, on time, for as long as the recording runs. 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.

What made this so hard to chase down is that nothing anywhere tells you it happened. There is no warning and no log line, only a file with less audio in it than the room had.

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.

Since we switched, the audio track comes out the same length as the video, over hours-long takes, every time. We have not lost a syllable.

If you use a different tool and see drifting or missing audio, there is not much you can do about it from the outside, because the bug lives in the tool’s capture path rather than in your settings. Recording audio separately in a dedicated audio app and syncing in post does work, though 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 resolves the OS default input device and then shows you, by name, which microphone it is about to record, instead of quietly following whatever device macOS promoted most recently. If you want a different mic, you pick it, 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.

Why audio bugs hurt more than the others

A dropped frame you can see. Missing audio you find out about later, usually when the take is unrepeatable. Writing a file is the easy half of a recorder’s job; the half worth engineering is making sure the file contains everything that happened. That is also what drove the crash-safety work and how we think about picking a recording format.

If you record on a Mac and your audio has gone missing before, it was probably one of these two traps rather than anything you did.