[SOLVED] Unreal Editor doesn't receive mic input in MacOS

I’ve searched extensively, and couldn’t find an answer. I’ve got a project which uses microphone input, and it works perfectly under Windows (win 10), but does not work under MacOS (tested with Catalina and Mojave).
The engine versions I’ve tried to use my project with are 4.22 and 4.23

I regretfully have to inform you the capture plugin is for windows only!

ACTUALLY 4.24 dropped today, and from the changelog we can read:

New: The Audio Capture plugin now also supports Xbox One, PS4, and Mac.”

So I guess update engine and try again!

I’ve tested and can confirm that the audio capture plugin is now working, though I’ve had issues with an old project converted from 4.22.

Any chance you’ve got a Blueprint that shows the correct flow? I haven’t been able to get this to work sadly.

edit: noticed that the engine updated to 4.24.1 and I correctly got the dialog that asks permission for Unreal to use the microphone on MacOS.

Not working for me on 4.24.3, the editor never asks for permission.

Edit: tried reinstalled the whole engine, still not working.

I’m running into the same issue. Currently working on 4.26 but 25 and 24 also don’t seem to work. Voice chat works fine on PC.

Please help?

For the strugglers like myself i write this

I have spent many weeks trying to figure this out. I have tested it on the MacOS BigSur 11.0
Tested only on Shipping Client build version. This steps will NOT work for editor version, this is what i did not figure out yet

After building Shipping Client version of your game:

  1. First of all, remember that 4.25.0 is not working at all, as i figured it out. To run this i used “4.25 Plus” version with open source from EpicGames github
  2. Inside of you .app file, you can see something like on the first screenshot. You are interested in the Info.plist file, open it
  3. Inside of it click RMB on the blank space and select “Add row”. The row name should be “Privacy - Microphone Usage Description”
  4. You should write some description to it (in the “value” column). You will end up with something like what you can see on screenshot 2
  5. When the engine for the first time will try to capture sounds with AudioCapture or any custom solution of yours, it will ask user about permission and after that your voice capture will work correctly. Remember that if the engine asks you for microphone permission on the same level you are capturing the sound on, it will NOT capture anything for the first time. You will be required to reload the game 1 time, it will remember your choice and start capturing correctly

Hope this helps!

Hey. For anyone still having the same issue, Sergel Petrov’s solution wasn’t all we had to do in order to get it to work.

In addition, we had to add this piece of code as some function you call before actually using any microphone data.

//That's the include / import you need

#import <AVFoundation/AVFoundation.h>

//// Then this in some function -->

// Request permission to access the camera and microphone.
switch ([AVCaptureDevice authorizationStatusForMediaType : AVMediaTypeAudio])
case AVAuthorizationStatusAuthorized:

// The user has previously granted access
case AVAuthorizationStatusNotDetermined:
// The app hasn't yet asked the user for mic access.
[AVCaptureDevice requestAccessForMediaType : AVMediaTypeAudio completionHandler : ^ (BOOL granted) {
if (granted) {

}] ;
return true;
case AVAuthorizationStatusDenied:

// The user has previously denied access.
return false;
case AVAuthorizationStatusRestricted:

// The user can't grant access due to restrictions.
return false;

I just got it working myself, so I haven’t cleaned it up. But I think you’ll get it. You can do whatever logic in the different switch statements and the response of the handler. This effectively asks the OS about the current permission state, and then, if it has no permission yet, finally actually opens the auth-modal. Remember you still have to do what Sergel Patrov said, by adding that line to the pfile. I’m certain you somehow can also add that to the editor, but for now I only got it working in packaged (as for a lack of trying since I figured it out).

Best of luck.