Skip to content

Virtual device registration for MediaStream and friends #7

Open
@hoch

Description

@hoch

There was an idea floating around to integrate MediaStream to AudioDeviceClient. This is just a straw-man code example.

// These are MediaStream objects that are already opened.
const remoteConsumer;
const remoteProducer; 

// Scenario: device #6 and #7 are remote input and output devices respectively.
(async () => {
  await navigator.mediaDevices.registerAudioSink(remoteConsumer);
  await navigator.mediaDevices.registerAudioSource(remoteProducer);

  const devices = await navigator.mediaDevices.enumerateDevices();  
  const constraints = {
    mode: ‘raw’,
    outputDeviceId: devices[6].deviceId,
    inputDeviceId: devices[7].deviceId,
    callbackBufferSize: 2048,
    inputChannelCount: 2,
    outputChannelCount: 2,
  };

  const client = await navigator.mediaDevices.getAudioDeviceClient(constraints);
  await client.addModule('my-client.js');
  client.start();
})();

This needs a spec work for MediaDevices API, which might take a while. However, once we can make it the API shape looks quite sensible.

cc @alvestrand

Metadata

Metadata

Assignees

No one assigned

    Labels

    AudioDeviceClientProject label for AudioDeviceClient

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions