web技術分享| WebRTC控制攝像機平移、傾斜和縮放
會提示使用者給予使用媒體輸入的許可,媒體輸入會產生一個
MediaStream
,裡面包含了請求的媒體型別的軌道。此流可以包含一個影片軌道(來自硬體或者虛擬影片源,比如相機、影片採集裝置和螢幕共享服務等等)、一個音訊軌道(同樣來自硬體或虛擬音訊源,比如麥克風、A/D轉換器等等),也可能是其它軌道型別。
它返回一個
Promise
物件,成功後會
resolve
回撥一個
MediaStream
物件。若使用者拒絕了使用許可權,或者需要的媒體源不可用,
promise
會
reject
回撥一個
PermissionDeniedError
或者
NotFoundError
。
-
constraints
constraints 引數是一個包含了
video
和audio
兩個成員的MediaStreamConstraints
物件,用於說明請求的媒體型別。必須至少一個型別或者兩個同時可以被指定。如果瀏覽器無法找到指定的媒體型別或者無法滿足相對應的引數要求,那麼返回的Promise物件就會處於rejected[失敗]狀態,NotFoundError
作為rejected[失敗]回撥的引數。
const constraints = {
video: {
pan: true,
tilt: true,
zoom: true
}
};
async function init(e) {
try {
const stream = await navigator.mediaDevices.getUserMedia(constraints);
handleSuccess(stream);
e.target.disabled = true;
} catch (e) {
handleError(e);
}
};
document.querySelector('#showVideo').addEventListener('click', e => init(e));
-
getVideoTracks()
方法 返回代表此流中影片軌道MediaStream
的物件序列 。MediaStreamTrack
-
一組 物件,媒體流中包含的每個影片軌道都有一個物件。影片軌道是那些 屬性為的軌道
video
。如果流不包含影片軌道,則該陣列為空。
-
-
getCapabilities
方法返回一個MediaTrackCapabilities
物件,此物件表示每個可調節屬性的值或者範圍,該特性依賴於平臺和user agent. -
getSettings()
方法返回一個MediaTrackSettings
物件,該物件包含 current 的每個可約束屬性的當前值MediaStreamTrack
。 -
applyConstraints()
方法將一組約束應用於軌道;這些約束讓網站或應用程式為軌道的可約束屬性(例如幀速率、尺寸、回聲消除等)建立理想值和可接受的值範圍。
function handleSuccess(stream) {
const video = document.querySelector('video');
const videoTracks = stream.getVideoTracks();
video.srcObject = stream;
const capabilities = videoTracks[0].getCapabilities();
const settings = videoTracks[0].getSettings();
for (const ptz of ['pan', 'tilt', 'zoom']) {
if (!(ptz in settings)) {
continue;
}
const input = document.querySelector(`input[name=${ptz}]`);
input.min = capabilities[ptz].min;
input.max = capabilities[ptz].max;
input.step = capabilities[ptz].step;
input.value = settings[ptz];
input.disabled = false;
input.event => {
try {
const constraints = {advanced: [{[ptz]: input.value}]};
await videoTracks[0].applyConstraints(constraints);
} catch (err) {
console.error('applyConstraints() failed: ', err);
}
};
}
}
function handleError(error) {
console.log(`getUserMedia error: ${error.name}`, error);
}
<style>
div.label {
display: inline-block;
font-weight: 400;
margin: 0 0.5em 0 0;
width: 3.5em;
}
video {
background: #222;
margin: 0 0 20px 0;
width: 500px;
height: 400px;
}
</style>
<body>
<video id="gum-local" autoplay playsinline></video>
<button id="showVideo">Open camera</button>
<div>
<div>Pan:</div>
<input name="pan" type="range" disabled>
</div>
<div>
<div>Tilt:</div>
<input name="tilt" type="range" disabled>
</div>
<div>
<div>Zoom:</div>
<input name="zoom" type="range" disabled>
</div>
</body>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70013909/viewspace-2869106/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 傾斜攝影技術構建圖撲 WebGIS 智慧展館Web
- web技術分享| WebRTC記錄音影片流Web
- 傾斜單體化模型技術實現模型
- WebRTC開啟本地攝像頭Web
- 傾斜攝影測量知識基礎
- 攝像機控制軟體CaptureGRID更好的幫您管理攝像機APT
- CSS屬性transform之旋轉:rotate,縮放:scale,傾斜:skew,移動:translateCSSORM
- 航拍傾斜攝影 Web 3D GIS 數字孿生智慧火電廠Web3D
- 網路攝像機—影象壓縮方式—JPEG、MJPEG
- ARFoundation - 實現物體旋轉, 平移,縮放
- Android 可平移,縮放,旋轉的ImageViewAndroidView
- 視覺化學習:WebGL實現縮放平移視覺化Web
- 跨攝像頭多人跟蹤技術收集
- Hive資料傾斜Hive
- 傾斜攝影三維模型的立體裁剪的問題分析模型
- 如何實現傾斜攝影三維模型OSGB格式輕量化模型
- 傾斜攝影osgb格式檔案,進行座標轉換
- WebRTC從攝像頭獲取圖片傳入canvasWebCanvas
- macw的CAD教程:如何更快的縮放和平移Mac
- 技術分享| WVP+ZLMediaKit實現攝像頭GB28181推流播放
- WebRTC網頁開啟攝像頭並錄製視訊Web網頁
- FPGA中的影像平移技術FPGA
- pixi.js 簡單互動事件(點選、縮放、平移)JS事件
- 五款傾斜攝影與三維資料處理工具介紹:GISBox、Cesiumlab、OSGBLab、靈易智模、傾斜伴侶
- 蘋果為iPhone研發屏下攝像頭技術 iPhone 11或放棄劉海屏設計蘋果iPhone
- Spark學習——資料傾斜Spark
- Cesium傾斜模型單體化模型
- Qt 從 QTransform 逆向解出 Translate/Scale/Rotate(平移/縮放/旋轉)分析QTORM
- 使用基於 WebRTC 的 JavaScript API 在瀏覽器環境裡呼叫本機攝像頭WebJavaScriptAPI瀏覽器
- unity3d--攝像機Unity3D
- unity3d攝像機Unity3D
- CGAffineTransform二維檢視旋轉、縮放、平移變換詳解ORM
- Android 中實現圖片平移、縮放、旋轉同步進行Android
- 中國電信:軟體定義攝像機關鍵技術白皮書(附下載)
- 資料傾斜解決辦法
- IoT資料傾斜如何解決
- css具有傾斜效果的橫條CSS
- win10膝上型電腦攝像頭顯示斜槓怎麼回事 win10攝像頭開啟一直出現斜槓如何處理Win10