Did macOS Catalina (or something) break the Video library?

It seems like Catalina unceremoniously dropped all support for 32-bit software. I’m assuming that maybe these libraries are 32-bit compiled?

Nailed it, that dropping of 32-bit support seems like the culprit to me.

2 Likes

There are now related issues open on the Video library repo:

1 Like

Indeed. This is a serious problem for my students! I tried unsuccessfully to implement the workarounds suggested in the GitHub (swap out library with beta, and use terminal to change files). I wish I could help in fixing this issue but I just don’t have that knowledge – sorry. But I’m very keen that this gets fixed and the video library gets updated asap – we have a project coming up in the new year which uses a lot of live camera tracking techniques.

BTW – my workaround here to get live video into Processing has been to either use a Kinect, or opening a live camera window in Quicktime and using Syphoner to send it to Processing via Syphon.

I can play movies but not capture video after Catalina update. Some of my students using Catalina reported that they could not play movies either. 1 of them reported he solved it by uninstalling the Video library and then reinstalling it again – apparently.

This might be related to a missing permission key Requesting Authorization for Media Capture on macOS | Apple Developer Documentation I haven’t updated my testing macOS machine to Catalina yet to look at this myself (I’m now the main developer on the GStreamer bindings that Processing Video uses) - let me know how you get on!

Hey Neil. Thanks for getting back. It may well be something like this – it would be great if it was simple. While I understand what is required, I am not in a position to implement anything within any codebase. I’m dependent upon good people like yourself! If there was something I could call from Processing to force the permission that would be fine. Or a flag I could set (like in Android mode), or something.

If this is the answer I think it just involves adding the NSCameraUsageDescription key (with some String value) in to the Info.plist file inside the Processing app download (eg. Processing.app/Contents/Info.plist ) No coding, just a couple of lines of XML.

1 Like

In which case, possibly related: ios - Xcode: Missing Info.plist key for NSCameraUsageDescription - Stack Overflow

(I am not on Catalina)

Yes, good link - hopefully just a case of adding lines similar to https://stackoverflow.com/a/44690785

Hi. I tried simply copying a couple of lines into the Info.plist:

    <key>NSCameraUsageDescription</key>
    <string>APPNAME requires access to your phone’s camera.</string>

… but Processing fails to launch

Did you ever get this working? Just saw this looking back (someone asked elsewhere). I have a feeling editing the .info file might break the signing on the app?!

1 Like

Here’s what I did to solve this issue.

  1. Download the latest video release from from the releases page.
  2. Unzip the folder into ~/Documents/Processing/libraries. (Remove the existing video folder if it’s there)
  3. Open the Terminal, type cd, a space, and dragging in the video folder. Then press enter. It should look like this:
cd /Users/YOUR_USER_NAME/Documents/Processing/libraries/video
  1. Type xattr -r -d com.apple.quarantine * — this deletes the quarantine flags that cause the “gstreamer is not signed” error.
  2. The basic GettingStartedCapture example should work out of the box. All other examples require an extra step.
  3. In each example, the Capture constructor requires the name of the camera. Adapt each example like so:
  // old code
  video = new Capture(this, 640, 480);

  // new code
  String[] cameras = Capture.list();
  video = new Capture(this, 640, 480, cameras[0]);
5 Likes

Great info!

I reported that last year and it’s been fixed in master for months - time to nag for a new release! :smile:

3 Likes

Hi all. Thanks for your help in trying to get video capture working. enigmeta I followed you excellent instructions but instead of GettingStartedCapture failing by reporting:

libc++abi.dylib: terminating with uncaught exception of type NSException

… it now reports there being no cameras available:

Processing video library using GStreamer 1.12.4
There are no cameras available for capture.

String[] cameras = Capture.list();
is empty!

I checked my System Prefs in Privacy and ensured Processing is granted access to the camera. I’m using Processing 3.5.4 and the ‘Video Library Release 6 (version 2.0-beta4)’ on MacOS Catalina (10.15.3)

Hi thanks for your instructions!

I also added

<key>NSCameraUsageDescription</key>
<string>APPNAME requires access to your phone’s camera.</string>

in Processing.app/Contents/Info.plist

console output

Processing video library using GStreamer 1.16.0
Available cameras:
[0] “FaceTime HD Camera (Built-in)”

So my camera is getting detected. If I execute cam.start() - the light of my camera shortly turns on and off.

I never get any image from the camera → black screen

Any ideas?

1 Like

What I did was to download the old version (2.x) of Processing on my Mac OS X and run a camera sketch with that. That prompted a dialog box from Mac OS X of whether Processing was allowed to access the camera. I allowed access (and it now shows up in the System Preferences -> Security & Privacy -> Privacy -> Camera. tab).

Now, it turns out that Processing 3 is also able to access the camera and sketches run fine!

I hope that helps.

1 Like

Dear Friends

In my case, procedure described by Enigmeta works perfectly (MacBook Pro, Catalina, Processing 3) and my sketches are able to access the video camera.

However one thing is worth mentioning: after installing the library, the first run of the “GettingStartedCapture” example took a long time (for me about 3 minutes) - the sketch froze, nothing happened but after a while the camera started to work. Later everything started immediately, but this lag was on first try was very confusing :wink:

2 Likes

Capture(this, “CamTwist (2VUY)”) And work fine in getting started capure,this work fine with “ManyCam Virtual Webcam” of myCams Software what is a camTwist alternative; finally, you must can acces to you “FaceTime Camera” by this way:
cam = Capture(this, "FaceTime Camera);
but i dont have any icon of Processing in Security and Privacity > Camera :S

And it’s possible what the video library now can’t be compatible with the P3D mode?