wonderunit / storyboarder

✏️ Storyboarder makes it easy to visualize a story as fast you can draw stick figures.
https://wonderunit.com/storyboarder
3.22k stars 300 forks source link

MediaRecorder not recognizing audio input channel #2017

Open 12349010 opened 4 years ago

12349010 commented 4 years ago

When I go to record an audio clip via MediaRecorder, Storyboarder does not recognize my audio input. I tested this with a USB microphone and a built-in microphone but was not able to come up with audio.

The program will allow me to "record" but no audio is actually recorded. Audio recording works fine on other programs like GarageBand and Premiere Pro.

Desktop

Additional context Possibly related to this issue, Storyboarder has not requested permission for access to my microphone. I cannot figure out how to grant this permission if it was not requested by the application.

audionerd commented 4 years ago

You’re trying to record audio from within Storyboarder for a board, right? Is your USB microphone set as the input device in macOS preferences?

12349010 commented 4 years ago

Yes. And when testing sound input levels on the MacOS device preferences sound worked. The issue seems to be localized within the Storyboarder application.

On May 25, 2020, at 7:02 PM, Eric Skogen notifications@github.com wrote:

You’re trying to record audio from within Storyboarder for a board, right? Is your USB microphone set as the input device in macOS preferences?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

incanus commented 4 years ago

Same here, seeing this on Catalina. I also never get prompted for microphone access, and thus Storyboarder doesn't show up in the Privacy preference pane.

incanus commented 4 years ago

I'm guessing this has something to do with a lack of the proper entitlements on the Mac and luckily, the app doesn't crash but just merely fails to record audio.

Per here, the JavaScript [MediaRecorder]() API is used:

    this.mediaRecorder = new MediaRecorder(
      this.userMedia._mediaStream.mediaStream,
      {
        mimeType: 'audio/webm;codec=opus'
      }
    )
  }

However, per here in the build/entitlements.mac.plist, the only requested entitlement is com.apple.security.cs.allow-unsigned-executable-memory.

Per this page on Electron code signing, it looks like you might need to add com.apple.security.device.audio-input and possibly make a call to systemPreferences.askForMediaAccess('microphone').

I'm guessing internally, you either aren't using a Mac, or when you are, using internal builds that don't necessarily have to be code signed. Or, maybe just not recording audio. 😄

audionerd commented 4 years ago

@incanus good catch thanks. We could add askForMediaAccess, would maybe go in prepareToRecord so it only runs when you're about to arm an actual recording. Would you want to do a PR for that?

incanus commented 4 years ago

Yeah, I can give it a try. Not really working in Node and/or Electron right now, but I think I could whip it up if I can get the app standing up in the first place. Will report back.

incanus commented 4 years ago

For others FYI, if you download/clone the source, optionally reset to the latest release tag (git reset --hard v2.0.1), and then follow the directions to npm install & npm start, it starts up and doesn't have the reported issue. At least it doesn't for me, but that could be related to already-existing Terminal-related permissions on my Mac.

MoreTacos commented 2 years ago

I'm having the same problem.

MoreTacos commented 2 years ago

I compiled the app locally and got the request for permission to use audio (and the audio recording worked properly).