2017-06-19 3 views
0

基本的に質問はタイトルにあります。これはWebRTCとgetUserMedia関数です。同様の質問がここにあった:How to keep 1:1 aspect ratio video all the time in WebRTC。しかし私の場合、私はMediaRecorderを使ってストリームを記録する必要があります。ちょうどcssでビデオ要素を切り抜くだけでは不十分です。 私はgetUserMediaの制約について少し混乱しています。 aspectRatioパラメータがありますが、必要な結果を得る方法を管理しませんでした。アスペクト比が1:1で使用可能な解像度が最大のウェブカメラストリームを取得する方法

const constraints = { 
    audio: true, 
    video: { 
    width: { exact: 720 }, 
    } 
}; 

しかし、それは自動的に最大解像度を定義するものではありません。どのようにスマートな方法でそれを行うためのアイデアはありますか?

+0

[WebRTCで1:1のアスペクト比のビデオを常に保持する方法](https://stackoverflow.com/questions/36961228/how-to-keep-11-aspect-ratio-video-all)の可能な複製-the-time-in-webrtc) – jib

+0

@jibはい、その質問は似ていますが、MediaRecorderを使って記録するストリームが必要です。 CSSを使ってビデオ要素を切り抜くだけでは不十分です。 –

+1

'aspectRatio'はChromeやFirefoxではまだ実装されていません。しかし、getUserMedia()がカメラ出力を再スケーリングすると思われるようです。すべてのブラウザがこれを行うわけではなく、カメラのネイティブモードを発見できるので、代わりにOverconstrainedErrorが失敗する可能性があります。 – jib

答えて

3

すべてのカメラがすべてのアスペクト比をサポートするわけではありません。 1:1は確かに奇妙なアスペクト比です。

あなたがしなければならないことは、あなた自身のクロッピングを行い、自分のストリームを作ることです。これを行うには、ビデオのsrcObjectをgetUserMediaStreamに設定し、すべてのフレーム(requestAnimationFrame()を使用)を、キャンバスに描画します。そこから、CanvasCaptureMediaStreamを使用して、編集したビデオをWebRTCコールで使用できるストリームに戻します。

関連する問題