簡體   English   中英

WebRTC - 調用 stop() 后重新啟動視頻流

[英]WebRTC - Restart Video Stream After Calling stop()

因此,我使用 webRTC 創建本地流(視頻和音頻),並希望能夠停止和重新啟動所述流的視頻。

在我想停止流時,我正在獲取本地視頻軌道:

     var vidTrack = this.videoEl.srcObject.getTracks().find(track => track.kind == 'video')

然后我在軌道上調用 stop() ,它可以工作,並關閉我設備上的相機指示燈(這是我想要的)。 問題是這似乎是一種單向方法,一旦我調用 stop() 就無法重新啟動流。

我玩過只是在軌道對象上切換enabled布爾值,這確實禁止軌道通過,但不會停止在我的設備上顯示相機指示燈(我需要,stop() 確實如此)。

只是想知道是否有人遇到過這個問題/有想法或解決方案來獲得我需要的東西。

根據 Dirk V 的回應,這是我為將來可能會看到此問題的任何人而最終得出的解決方案:

  if (vidTrack && toggle && vidTrack.readyState && vidTrack.readyState == "ended") {
    let newVideoStreamGrab = await navigator.mediaDevices.getUserMedia({
      video: true
    })
    this.stream.removeTrack(this.stream.getVideoTracks()[0])
    this.stream.addTrack(newVideoStreamGrab.getVideoTracks()[0])
  } else {
    vidTrack.stop()
  }

最好的方法是在停止后再次從相機請求流,因為無法重新啟動停止的軌道。

啟用標志僅用於允許或禁止軌道渲染幀。 所以這意味着它不會影響相機的狀態。

如果為 true,則啟用表示允許軌道將其實際媒體呈現到輸出。 當 enabled 設置為 false 時,軌道僅生成空幀。 來源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM