electronアプリにてwebカメラを使った撮影アプリを作成しています。
表示、録画の工程は作成でき、解像度の指定はできています。
ただ、FPSのみ30FPS以上に設定しても30以上上がりません。
err
1getUserMedia Err: NavigatorUserMediaError {name: "TrackStartError", message: "", constraintName: ""}
javascript
1 var constraints = { 2 audio: true, 3 video: { 4 deviceId: Id, 5 frameRate:fps, //60に指定minや 6 //1920x1080など 7 width:{ min:wid }, 8 height:{ min:hei } 9 } 10 }; 11 navigator.mediaDevices.getUserMedia( 12 constraints 13 ).then(function(stream) { 14 var webcam = document.getElementById(VideoElm); 15 webcam.srcObject = stream; 16 }).catch(function(err){ 17 console.error('getUserMedia Err:', err); 18 }); 19 }
カメラはLOGICOOL BRIOを使っているため使用条件は満たしています。
最大4k:30FPS,1080P:30/60FPS,720P:60/90FPS
ただ、Chromeブラウザで以下のサンプルを試したところ
WebRTC samples Constraints & statistics
FPSが60程指定して表示されました
サンプルのソースコードを真似て書き換えたりもしてみましたが、Electronアプリでは30以上指定できませんでした。(エラーが出る)
javascript
1 const constraints = {}; 2 constraints.audio = true; 3 constraints.video = {}; 4 if (minWidthInput.value !== '0') { 5 constraints.video.width = {}; 6 constraints.video.width.min = minWidthInput.value; 7 } 8 if (maxWidthInput.value !== '0') { 9 constraints.video.width = constraints.video.width || {}; 10 constraints.video.width.max = maxWidthInput.value; 11 } 12・・・・・・・・・・・・・・・以下略・・・・・・・・・・・・・・・
もしかしたらchromiumだとFPS30以上対応していないのかなとも思いましたが、文献が見つかりませんでした...
一応videoタグで60FPSの動画を再生してみましたが、ちゃんとFPS60のまま再生できました。
なのでWebRTCでの指定方法が間違っているのかな...と思っています。
解像度とFPSの組み合わせは色々変えて見ましたがダメでした。
なにか情報を頂けたら幸いです。よろしくお願いいたします。