MACOS can't find any video or sound capture devices on UE4

Still no solution for Mac users? Really wanted to step into Virtual Production…

There weren’t solutions in the latest UE4 update. Since UE5 is out now for testing, it probably will never be fixed in UE4 for mac users.

upupupupupup

Any updates guys…

Hey guys just a little fix, it isn’t the fastest or the best but still works. If you run Unreal in a Windows VM such as Parallels, all of the capture devices will show up correctly. I attempted to copy the Media URL over to Unreal on Mac with no luck. I will keep trying things, and in the meantime, please Epic, fix this on mac!

In UE5.0.3 still didn’t fix this problem
I hope installing Windows is not the only way.

I still cannot seem to get this to work in 5.1 is there a fix for Mac users M1 and Ventura…??? Help… :flushed:

Up up up up up up Please fix this!

I can see and connect to all of my audio capture devices, i can even see my video devices under audio, but video capture is blank.

1 Like

Hi guys! Who has a news about this problem? Have same on 5.1

2 Likes

I wish there was a solution to this. Have been trying to do audio capture on mac for many days now… is there really no way to give premission to microphone to unreal engine on mac?

Yes, indeed. I put in a bug report.

I followed this guide to get …

But Unreal still complains with …

Cannot start capture: Missing Info.plist entry: “NSMicrophoneUsageDescription” (audcap://AppleUSBAudioEngine:ZOOM:Q2n-4K Webcam 1080p:000C24083493:3)

… and then crashes, even though I added into project settings …

NSCameraUsageDescriptionCamera is used for AR functionality\nNSMicrophoneUsageDescriptionMicrophone is used for AR functionality

But there’s only an entry for that plist item for iOS. Also Unreal can only see the mic not the camera.

As the Dolby article says …

Using the plugin in the Unreal Editor requires the editor to obtain microphone and camera permissions, however:

  • On Unreal Engine 5.0 and earlier, the editor is not packaged correctly to ask for either permission.
  • On Unreal Engine 5.1, the editor is not packaged correctly to ask for the camera permission.
  • On Unreal Engine 5.2, the editor is packaged correctly to ask for both permissions.
  • On Unreal Engine 5.3, the editor is again not packaged correctly to ask for either permission.

On my mac even ffmpeg at the command line triggers the usual permissions dialog when opening the camera.

It seems like this could be fixed by the community until Epic releases something. It seems to be missing files that should have been supplied with the editor, “packaged incorrectly” as Dolby say.

One thing I have not tried is building the latest source to see if this has already been fixed.

I’ve been battling this same issue. I have SOME progress, but it still won’t enumerate devices. It doesn’t require modifying engine files. Note, it works totally fine for me in UnrealEngine, even with cross-platform code (windows/mac).

First, add the requesting keys to your info.plist . Then make some code to actually perform the request.

I still get an empty list tho.

Add this to: (PROJECT/Build/Mac/Resources/Info.template.plist)

    <key>NSMicrophoneUsageDescription</key>
	<string>Augmented</string>
	<key>NSCameraUsageDescription</key>
	<string>Augmented</string>

CameraRequester.h:

#pragma once

class CameraRequester
{

public:
    CameraRequester() {}
    ~CameraRequester() {}

    bool requestAccess();
};

CameraRequester.mm (note, Objective C code)

#if PLATFORM_APPLE
#import <AVFoundation/AVFoundation.h>
#endif
#import "CameraRequester.h"

bool CameraRequester::requestAccess()
{

#if PLATFORM_APPLE
    NSLog(@"Checking camera access...");
    AVAuthorizationStatus st = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
    if (st == AVAuthorizationStatusAuthorized) {
        return true;
    }
    NSLog(@"Requesting camera access...");

    dispatch_group_t group = dispatch_group_create();

    __block bool accessGranted = false;

    if (st != AVAuthorizationStatusAuthorized) {
        dispatch_group_enter(group);
        [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {

            accessGranted = granted;
            NSLog(@"Granted!");
            dispatch_group_leave(group);
        }];
    }

    dispatch_group_wait(group, dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)));

    return accessGranted;
#else
    return true;
#endif
}

Got it. I don’t know if you NEED to have it ask for permission (I do anyways, it only asks once). You need to add a new key to your Entitlements file, then it works.

I’ll leave this here for other people that are googling. It’s unfortunate it’s not as well documented, but having this off by default is the right choice. Asking for permission in apps that don’t need it will get you rejected from the store. It would be nice if there was better integration, but knowing is half the battle… or all the battle…

{PROJECT}/Build/Mac/Resources/Sandbox.Server.entitlements
and
{PROJECT}/Build/Mac/Resources/Sandbox.NoNet.entitlements

	<key>com.apple.security.device.camera</key>
	<true/>