我試圖獲取不同的MediaStreams,同時在每種情況下指定不同的deviceId
。如何在Firefox中獲取具有不同設備約束的多個流?
例如:我有3個麥克風(audioinputs
)可用,並且想要爲它們中的每一個獲取音頻流。
- streamC1:與
deviceId
4hYbpq3YGKqNN6RbbLz5HrLfolsmjFDMl8sY - streamC2:與
deviceId
MZ0gdxcs1Q0NW0sobM8ri3kfDhmOs1K74e2p streamC3:與
deviceId
iUWqFDfruPGcT6nl9gUxeN6dCM8VfFH5ZmR8const c1 = { audio: { deviceId: { exact: audioInputs[0].deviceId } } }; const c2 = { audio: { deviceId: { exact: audioInputs[1].deviceId } } }; const c3 = { audio: { deviceId: { exact: audioInputs[2].deviceId } } }; getMedia(c1) .then(() => getMedia(c2)) .then(() => getMedia(c3));
這可以在Chrome(版本55.0.2883.87)中正常工作,並且我得到3個不同的流(C1,C2,C3),其中所有的音軌都具有預期的標籤。
但是失敗,用下面的錯誤的第二和第三呼叫到getUserMedia
(C2,C3)在Firefox(50.0.2):
According to the documentation爲NotReadableErrors
:
Although the user granted permission to use the matching devices, a hardware error occurred at the operating system, browser, or Web page level which prevented access to the device.
(但我可以獲取多個流而且沒有遇到這個問題。)
Firefox是否像預期的那樣運行?由於文檔提到「硬件錯誤」? 是否有不同的方式來獲取多個流(具有不同的設備約束)?或者我必須停止流,釋放設備,然後獲取新的流?
謝謝你的時間。
嗨,非常感謝您的快速回復。所以多個活動的**視頻輸入源**應該沒有問題地工作? (我做了一個快速測試,似乎工作)。目前爲了釋放相關設備,我不得不停下軌道? – wpp
正確和正確。並且要注意,如果設備已通過不同的流程獲取,通常無法獲取設備。 – pehrsons