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
- ARFoundation - 實現物體旋轉, 平移,縮放
- 傾斜攝影osgb格式檔案,進行座標轉換
- 如何實現傾斜攝影三維模型OSGB格式輕量化模型
- 視覺化學習:WebGL實現縮放平移視覺化Web
- macw的CAD教程:如何更快的縮放和平移Mac
- 五款傾斜攝影與三維資料處理工具介紹:GISBox、Cesiumlab、OSGBLab、靈易智模、傾斜伴侶
- 跨攝像頭多人跟蹤技術收集
- 技術分享| WVP+ZLMediaKit實現攝像頭GB28181推流播放
- 傾斜攝影三維模型的立體裁剪的問題分析模型
- WebRTC從攝像頭獲取圖片傳入canvasWebCanvas
- pixi.js 簡單互動事件(點選、縮放、平移)JS事件
- FPGA中的影像平移技術FPGA
- 歡迎來到,2021攝像機競技場
- WebRTC網頁開啟攝像頭並錄製視訊Web網頁
- Cesium傾斜模型單體化模型
- Spark學習——資料傾斜Spark
- Qt 從 QTransform 逆向解出 Translate/Scale/Rotate(平移/縮放/旋轉)分析QTORM
- CGAffineTransform二維檢視旋轉、縮放、平移變換詳解ORM
- CaptureGRID for Mac(攝像機控制軟體) v4.20啟用版APTMac
- IoT資料傾斜如何解決
- 資料傾斜解決辦法
- 蘋果為iPhone研發屏下攝像頭技術 iPhone 11或放棄劉海屏設計蘋果iPhone
- 使用基於 WebRTC 的 JavaScript API 在瀏覽器環境裡呼叫本機攝像頭WebJavaScriptAPI瀏覽器
- win10膝上型電腦攝像頭顯示斜槓怎麼回事 win10攝像頭開啟一直出現斜槓如何處理Win10
- 數倉效能最佳化:傾斜最佳化-表示式計算傾斜的hint最佳化
- 各公司使用者畫像技術案例分享
- Spark 資料傾斜及其解決方案Spark
- hive優化-資料傾斜優化Hive優化
- Flutter 自定義縮放控制元件Flutter控制元件