Как изменить / добавить дорожки медиапотока в работающем медиапотоке?

#javascript #stream #getusermedia #mediastream

#javascript #поток #getusermedia #mediastream

Вопрос:

Я хочу управлять запущенным медиапотоком, изменяя дорожки на основе выбора пользователя, т.Е. Выбора микрофона.

Отсюда https://developer.mozilla.org/en-US/docs/Web/API/MediaStream/addTrack в нем упоминается, что мы можем добавить новый трек, но из API MediaStreamTrack https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack значение конструктора отсутствует, а также большинство свойств являются «Только для чтения». Просматривая более старые сообщения ранее здесь, в StackOverflow, я прочитал, что добавление новых дорожек не поддерживается, и я также прочитал, что дорожки создаются при доступе getUserMedia() и запуске потока.

Вчера вечером я прочитал, что вы можете добавить несколько видео / аудиопотоков (но без примера), но я не уверен, как это настраивается и как я мог бы зацикливаться на том, как выложен код, т.е.,

  navigator.mediaDevices.getUserMedia 

      ({

         audio: true,
         video:
         {

            width: { min: 1280, ideal: 1920 },
            height: { min: 720, ideal: 1080 }    
         }

      })
  

как бы я прошел цикл с таким форматом (или как я могу установить формат другим способом, кроме этого), чтобы правильно настроить устройства? Имеет ли смысл иметь несколько видео / аудио дорожек, которые просто торчат?

Я также думал о том, чтобы переделать каждый поток, но это кажется пустой тратой ресурсов и не нужно, если я могу заставить работать другой способ.

Итак, мои вопросы.

  1. Какие способы доступны / наилучшие способы изменения дорожек медиапотока во время запущенного медиапотока?

  2. Возможно ли добавлять / удалять дорожки самостоятельно? Кажется, что добавление дорожек — это внутренний код, но обидно, что методы доступны нам, но, похоже, мы не можем их использовать. Кажется, что removeTracks будет работать с дорожками в MediaStream, просто кажется, что проблема с добавлением.

  3. если мы не можем добавлять дорожки, могу ли я просто загрузить все дорожки и изменить их по своему усмотрению, а затем удалить все те, которые не нужны в конце?

Спасибо

Комментарии:

1. twilio.com/blog/2018/06/… Я должен был сделать что-то подобное в Twilio. В этой статье излагаются некоторые методы, которые они используют для этого. Некоторые из них связаны с их JavaScript SDK, поэтому вам может потребоваться разложить некоторые из них, чтобы получить доступ ко всем необходимым методам. То, что они делают с «присоединением» и «отсоединением» дорожек, вероятно, то, что вам нужно. Извините, у меня нет информации о том, как это сделать в Vanilla JS.

2. Спасибо, я в конечном итоге нашел решение, я ценю ваш вклад.

3. @user11116993 каким было ваше решение, не хотите поделиться?