Как определить, есть ли у MediaStreamTrack «настоящие» данные после его отмены?

Если вы приостановите, а затем снова включите MediaStreamTrack с помощью .enabled = false, а затем .enabled = true, есть небольшая задержка между установкой флага .enabled и фактическим получением реальных данных.

Если вы передадите поток элементу видео, вы увидите, что сначала вы получите черный экран, а вскоре после этого появятся фактические данные камеры.

Мне интересно, есть ли способ определить, когда станет доступен «настоящий» поток. Я мог бы периодически делать снимок из потока с помощью холста и проверять данные с помощью чего-то вроде .getImageData, но это кажется дорогим.

Есть ли событие, которое запускается, когда данные становятся доступными?

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


person hbhanoo    schedule 09.10.2020    source источник
comment
Вы пытались использовать событие unmute трека? track.onunmute= function(ev) {/* video now available */ } Если это не работает во всех необходимых вам браузерах, знайте следующее: отключенные видеодорожки представляют полностью черные пиксели (цвет #000000). Этот цвет почти никогда не появляется в реальных данных видеодорожки. Таким образом, вам не нужно смотреть на весь элемент <video>, чтобы увидеть, такой ли он черный. Вы можете смотреть только на один пиксель. Это занимает скромное количество времени и мощности на кадр.   -  person O. Jones    schedule 10.10.2020