2016-02-19 19 views
2

在Firefox中,當調用getUserMedia()時,我添加了一個約束來限制幀速率。但是,任何低於30fps的值都不允許在GUM權限對話框中選擇網絡攝像機。Firefox幀速率最大約束

Firefox frame rate constraint

對於〔實施例,我已經克隆和改變在https://mikeg0.github.io/samples/src/content/peerconnection/constraints/ github.com/webrtc/samples的制約例子。我將frameRate.min變量重命名爲frameRate.max。這在Chrome瀏覽器中可以正常使用,但不能在Firefox中使用。

我發現this bugzilla報告,但它說幀速率限制被實現。這是Firefox尚未解決的問題嗎?它是否與this錯誤有關?

或者我不正確地使用這個約束?

+0

這是在OSX上的任何機會? – jib

+0

對不起,離開了。發生在Windows 10上。 –

+0

剛剛在OSX上測試過,確實也在那裏發生過。我剛剛發現這個問題... https://bugzilla.mozilla.org/show_bug.cgi?id=1131861 我會留給專家來整理一下。就個人而言,我對帶寬限制比幀速限制更感興趣:) –

回答

1

攝像機發現

瀏覽器(甚至OS'es)不同意其拍照模式從getUserMedia返回。

儘管Chrome按照您的要求重新調整了作物尺寸,但Firefox只會返回原生於您的特定相機的模式。兩者都符合規範。

兩種方法都有優勢,但不幸的是它們是互相排斥的,因爲如果你總是得到你想要的東西,那麼你對相機一無所知。

至於你爲什麼沒有獲得低於30 fps的模式,可能是因爲你的相機沒有任何模式。對於Windows 7上的Firefox,我可以從我的Logitech C920中獲得各種模式,但是當我限制幀頻時,我傾向於只返回相當高分辨率的模式(如2592 x 1944 x 10fps),這可能會導致成爲我的特定模型的特徵。

在OSX上還有你找到的bug 1131861。 OSX是棘手的,因爲它在操作系統級別對相機的揭示很少。目前30fps是一種人爲的限制。

設置帶寬限制

它從你的意見,你真正關心的是降低對等連接的帶寬需求的聲音。該規範仍在研究how to specify encoding parameters like bitrate, resolution and framerate directly,目前看起來是這樣的:

var encoding = { maxBitrate: 60000, maxFramerate: 5, scaleResolutionDownBy: 2 }; 

var sender = pc.addTrack(stream.getVideoTracks()[0], stream); 
sender.setParameters({ encodings: [encoding] }); 

您可以指定聯播多個encoding

此功能適用於Firefox 47(Beta),其中this fiddle應該可以工作。