# External webcam not working on Apple Silicon (M4) Mac Mini

**URL:** <https://discourse.processing.org/t/external-webcam-not-working-on-apple-silicon-m4-mac-mini/47686>\
**Category:** Beginners\
**Tags:** homework\
**Created:** [January 3, 2026, 2:52pm UTC](https://discourse.processing.org/t/external-webcam-not-working-on-apple-silicon-m4-mac-mini/47686 "2026-01-03T14:52:32Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dulce\_Criatura](https://avatars.discourse-cdn.com/v4/letter/d/f0a364/32.png) [@Dulce\_Criatura](https://discourse.processing.org/u/Dulce_Criatura)\
**Post date:** [January 3, 2026, 2:52pm UTC](https://discourse.processing.org/t/external-webcam-not-working-on-apple-silicon-m4-mac-mini/47686/1 "2026-01-03T14:52:32Z")

</div>

Hi everyone,

I’m trying to use an external Logitech webcam (Brio 300) in Processing on a Mac Mini M4 (Apple Silicon).

Processing detects the camera (it appears in the device list), but it fails to actually capture video. I get GStreamer / AVFoundation errors and the stream never starts.

After testing different Processing versions and libraries, it seems there might be a compatibility issue between Processing’s video stack (OpenGL / GStreamer / JOGL) and newer Apple Silicon Macs.

Has anyone managed to reliably use an external USB webcam with Processing on Apple Silicon (M1/M2/M3/M4)?

Is there a known workaround or recommended setup?

Thanks in advance.

---

<div class="post-metadata">

**Author:** ![svan](https://avatars.discourse-cdn.com/v4/letter/s/82dd89/32.png) [@svan](https://discourse.processing.org/u/svan)\
**Post date:** [January 4, 2026, 8:19pm UTC](https://discourse.processing.org/t/external-webcam-not-working-on-apple-silicon-m4-mac-mini/47686/2 "2026-01-04T20:19:11Z")

</div>

There is a fix here: [How to fix "Internal d... | Creative Technology Lab Wiki](https://lab.arts.ac.uk/books/creative-coding/page/how-to-fix-internal-data-stream-error-in-processing-4)

Works on my Mac M2.

```processing
import processing.video.*;

Capture cam;

void setup() {
  size(640, 480);

  String[] cameras = Capture.list();
  
  if (cameras.length == 0) {
    println("There are no cameras available for capture.");
    exit();
  } else {
    println("Available cameras:");
    for (int i = 0; i < cameras.length; i++) {
      println(cameras[i]);
    }
    
    // The camera can be initialized directly using an 
    // element from the array returned by list():
    cam = new Capture(this, width, height, "pipeline:avfvideosrc device-index=0", 30);
    cam.start();     
  }      
}

void draw() {
  if (cam.available() == true) {
    cam.read();
  }
  image(cam, 0, 0);
  // The following does the same, and is faster when just drawing the image
  // without any additional resizing, transformations, or tint.
  //set(0, 0, cam);
}

```

---

<div class="post-metadata">

**Author:** ![glv](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/glv/32/18785_2.png) [@glv](https://discourse.processing.org/u/glv)\
**Post date:** [January 5, 2026, 8:03pm UTC](https://discourse.processing.org/t/external-webcam-not-working-on-apple-silicon-m4-mac-mini/47686/3 "2026-01-05T20:03:43Z")

</div>

> [@Dulce\_Criatura](#):
>
> Is there a known workaround or recommended setup?

Hello @Dulce_Criatura,

You can often find helpful answers in the Processing GitHub issues.  
Try searching both **open** and **closed** issues with different keywords like `video`, `GStreamer`, or the exact error message.

This thread looks relevant:

> <https://github.com/processing/processing4/issues/983>
>
> \### Most appropriate sub-area of Processing 4?
> 
> Other (specify if possible)
> 
> \###… Processing version
> 
> 4.3.3, 4.3.4, 4.4.0
> 
> \### Operating system
> 
> macOS 15.3.2
> 
> \### Steps to reproduce this
> 
> 1. Video capture is broken: generates error: "BaseSrc: \[avfvideosrc0\] : Internal data stream error."
> using internal MacBook Pro camera as well as external cameras, via camera array.
> 
> Tried all the usual fixes from the past: starting from Terminal, variations of 
> "cam = new Capture(this, "pipeline:avfvideosrc");", toggling camera access in Privacy System Preference, etc.
> 
> It was working fine before the update from 15.3.1 to 15.3.2
> 
> 2. Camera works fine with Max, PureData, p5.js.
> 
> 3. external camera works in Processing with this option:      
> cam = new Capture(this, width, height, "pipeline:avfvideosrc device-index=2", 30);
> but internal one does not, regardless of the index setting.
> 
> 
> 
> \### snippet
> 
> \`\`\`processing
> 
> // Paste your code below :)
> 
> void setup() {
> 
> }
> 
> void draw() {
> 
> }
> \`\`\`
> 
> 
> \### Additional context
> 
> \_No response\_
> 
> \### Would you like to work on the issue?
> 
> I'm not qualified to do anything other than testing/hacking, but I'm happy to help.

Following links inside issues often leads to newer or related solutions and you will certainly learn a lot along the way.

Don’t get lost in there! I just did…

Also check out \*\*\* **✨** Related topics\*\*\* at the of this topic.

`:)`

---

<div class="post-metadata">

**Author:** ![Dulce\_Criatura](https://avatars.discourse-cdn.com/v4/letter/d/f0a364/32.png) [@Dulce\_Criatura](https://discourse.processing.org/u/Dulce_Criatura)\
**Post date:** [January 6, 2026, 2:41pm UTC](https://discourse.processing.org/t/external-webcam-not-working-on-apple-silicon-m4-mac-mini/47686/4 "2026-01-06T14:41:59Z")

</div>

Hi all, thanks for the links — they helped a lot.

I wanted to share what worked reliably on my setup  
**Mac mini M4 (Apple Silicon) + Logitech Brio 300 + Processing 4.x**.

The main issue seems to be forcing FPS or the full `Capture` constructor, which often triggers:

```auto
BaseSrc: [avfvideosrc0] : Internal data stream error

```

### Safe workaround

This works immediately and consistently:

```auto
cam = new Capture(this, "pipeline:autovideosrc");

```

It lets GStreamer handle device and format negotiation. The resolution is usually low, but it’s very stable.

### Better quality (works so far)

```auto
cam = new Capture(
  this,
  "pipeline:autovideosrc ! video/x-raw,width=1280,height=720 ! videoconvert"
);

```

This improves image quality on my machine. I recommend keeping the first version as a safe fallback in case macOS or driver updates affect the pipeline.

Hope this helps others on newer Apple Silicon Macs. Thanks!
