パンチルトズームカメラAPIを使用する
5926 ワード
何がPTZ APIですか?
PTZ APIは、カメラAPIの拡張であり、クロムバージョン87で追加された、それは開発者がパン、チルト、ウェブカメラのズーム機能にアクセスすることができます.
それはどのように私はそれを使用しますか?
このAPIはかなり新しいので、ブラウザがこのAPIをサポートしているかどうか最初にチェックしてください.
const supports = navigator.mediaDevices.getSupportedConstraints();
if (supports.pan && supports.tilt && supports.zoom) {
// Browser supports camera PTZ.
}
ブラウザーがそれをサポートするならば、我々は「使用&移動する」カメラにユーザの許可を要求しなければなりません.navigator.mediaDevices.getUserMedia()
を呼び出すことでこれを行うことができます.async function requestPTZ() {
try {
// First we request permission from the user, if they accept it will yield a MediaStream object
const opts = {video: {pan: true, tilt: true, zoom: true}};
const stream = await navigator.mediaDevices.getUserMedia(opts);
// Secondly we can bind this stream to a <video> element on the page.
document.querySelector("#video").srcObject = stream;
// Lastly we want to get the capabilities of our webcam, the current settings of it and the videotrack itself.
const [videoTrack] = stream.getVideoTracks();
const capabilities = videoTrack.getCapabilities();
const settings = videoTrack.getSettings();
// ...
} catch (error) {
throw new Error(error)
// User denies prompt, or
// matching media is not available.
}
}
それで、我々は現在、ユーザーのウェブカメラを見て、コントロールする能力を持っています、我々は現在、パンの傾きを変えるか、このようにズームするために、videoTrack.aplyConstraints
に引数を通過することができますasync function changeZoom(capabilities, settings, videoTrack) {
await videoTrack.applyConstraints({
advanced: [{ zoom: capabilities.zoom.max }]
})
}
if ('zoom' in settings) {
changeZoom();
}
デモ
私はCodepenの短い対話型のデモを書いたので、ブラウザのAPIダイアログを確認するためにユーザを必要としたので、embedが動作しないことに注意してください.
Reference
この問題について(パンチルトズームカメラAPIを使用する), 我々は、より多くの情報をここで見つけました https://dev.to/selenecodes/using-the-pan-tilt-zoom-camera-api-109cテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol