Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AudioDeviceManager functions not working on web #1652

Open
1 of 5 tasks
dannnnthemannnn opened this issue Mar 25, 2024 · 4 comments
Open
1 of 5 tasks

AudioDeviceManager functions not working on web #1652

dannnnthemannnn opened this issue Mar 25, 2024 · 4 comments

Comments

@dannnnthemannnn
Copy link

dannnnthemannnn commented Mar 25, 2024

Version of the agora_rtc_engine

6.3.0

Platforms affected

  • Android
  • iOS
  • macOS
  • Windows
  • Web

Steps to reproduce

  1. Attempt to use the audio device manager to enumerate or list audio devices

Expected results

You can change audio devices using the audio device manager

Actual results

It throws an unimplemented exception. I know this may mean it just hasnt been implemented yet, but wondering if that means there is no way in web to change audio devices? Any workarounds that might be available?

Code sample

Code sample
    await engine.getAudioDeviceManager().setRecordingDevice("123");

Screenshots or Video

No response

Logs

[2:20:29 PM:937][Iris log]:[callIrisApiAsync][start] {"event":"AudioDeviceManager_setRecordingDevice_4ad5f6e","data":"{"deviceId":"123"}","data_size":18,"result":"","length":[],"buffer_count":0}
[2:20:29 PM:937][Iris warning]:AudioDeviceManager_setRecordingDevice_4ad5f6e not supported in this platform!
[2:20:29 PM:937][Iris log]:[callIrisApiAsync][result] AudioDeviceManager_setRecordingDevice_4ad5f6e ret -4

Flutter Doctor output

Doctor output
[✓] Flutter (Channel stable, 3.19.3, on macOS 14.1.1 23B81 darwin-arm64, locale en-US)
[!] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    ✗ cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup for more details.
[✗] Xcode - develop for iOS and macOS
    ✗ Xcode installation is incomplete; a full installation is necessary for iOS and macOS development.
      Download at: https://developer.apple.com/xcode/
      Or install Xcode via the App Store.
      Once installed, run:
        sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
        sudo xcodebuild -runFirstLaunch
    ✗ CocoaPods not installed.
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To install see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.
[✓] Chrome - develop for the web
[✓] Android Studio (version 2023.2)
[✓] VS Code (version 1.84.2)
[✓] VS Code (version 1.85.0-insider)
[✓] Connected device (2 available)
[✓] Network resources

! Doctor found issues in 2 categories.
@dannnnthemannnn
Copy link
Author

I would also be open here to hearing how to implement this myself as a pull request. I see that the code already is calling into iris so I'm guessing some work needs to be done on the iris side?

@littleGnAl
Copy link
Contributor

Very much appreciate you are willing to contribute, the underlying implementation is inside the iris_web, (more detail here). But it's so sorry that it's still an early stage and lacks of contribution guide at this time, and you may need to take some time to understand how it works.

For a quick start, I think you can check the IVideoDeviceManagerImpl for reference
https://github.com/AgoraIO-Extensions/iris_web/blob/dc46c16fbbe2871a19cdc56453f12f5ff9f03093/packages/rtc/src/impl/IAgoraRtcEngineImpl.ts#L1146

@dannnnthemannnn
Copy link
Author

Thanks for the links! Trying to get the iris_web building and am getting the following error:

iris_web % pnpm install
Scope: all 5 workspace projects
Lockfile is up to date, resolution step is skipped
Packages: +1117
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 ERR_PNPM_FETCH_403  GET https://npm.pkg.github.com/download/@agoraio-extensions/agora-rtc-sdk-ng-fake/1.0.12/99350f1d3d2b0ed7d3bd4dd58e39cad252b07ee0: Forbidden - 403

An authorization header was used: Bearer ghp_[hidden]

These authorization settings were found:
//npm.pkg.github.com/:_authToken=ghp_[hidden]
//registry.npmjs.org/:_authToken=npm_[hidden]
@agoraio-extensions:registry=https://npm.pkg.github.com
Progress: resolved 1117, reused 169, downloaded 0, added 1
Downloading registry.npmjs.org/typescript/5.1.6: 1.37 kB/7.15 M

@littleGnAl
Copy link
Contributor

It is most likely you should set up the GitHub packages auth first.
https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-npm-registry

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants