2013-08-11 1 views
4

Я пытаюсь удалить дорожку из MediaStream. MediaStream.removeTrack() удаляет дорожку из потока, но свет камеры остается на дисплее, показывая, что камера все еще активна.Как удалить трек из MediaStream и веб-камеры «stop»?

https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack?redirectlocale=en-US&redirectslug=DOM%2FMediaStreamTrack

Это ссылается на stop() метод, который я полагаю бы полностью остановить камеру, в хроме, однако я получаю "Object MediaStreamTrack has no method 'stop'"

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

ответ

2

Вам нужно вызвать stop() на MediaStream, а не MediaStreamTrack.

Посмотрите на simpl.info/gum. С консоли вызовите stream.stop(): запись останавливается, а индикатор видеокамеры гаснет.

+0

Нет, если я только хочу, чтобы остановить один трек. Каждый MediaStream имеет два трека, аудио и видео. Если я остановлюсь на MediaStream, это закончит все. –

+1

Ah - так вы хотите остановить видео, но сохранить аудио? Не уверен, что это делает то, что вы хотите, но как насчет 'track.enabled = false'? Свет остается включенным, т. Е. Камера все еще работает. –

+0

Метод MediaStreamTrack 'stop()' не был реализован в Chrome или Firefox, хотя он находится в спецификации: http://dev.w3.org/2011/webrtc/editor/getusermedia.html#dom-mediastreamtrack-stop –

0

Похоже, что правильный способ справиться с этой проблемой состоит в том, чтобы остановить ваш MediaStream, воссоздать (и повторно подключить) его как аудио-только, а затем пересмотреть сеанс PeerConnection. К сожалению, Firefox в настоящее время doesn't support пересмотренный mid-session.

Единственный жизнеспособный взлом - это также воссоздать PeerConnection с новым MediaStream, как предложено here (см. «Добавление видео среднего вызова»).

7

MediaStreamTrack.stop() сейчас added к Chrome.

MediaStream.stop() является deprecated в Chrome 45.

Вы должны использовать MediaStream.getVideoTracks(), чтобы получить видео треков и остановить трек, используя MediaStreamTrack.stop()

+0

Интересно, как это решение было мотивировано. Есть ли где-нибудь обсуждение? – Unidan

 Смежные вопросы

  • Нет связанных вопросов^_^