質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

WebRTC

WebRTC(Web Real-Time Communication)とは、プラグイン無しでウェブブラウザ間の音声通話・ビデオチャットなどリアルタイムコミュニケーションができるオープンフレームワークです。W3CがAPIレベルで、IETFがプロトコルレベルでそれぞれ標準化が進められています。

Q&A

0回答

4149閲覧

iOS(iPhone)、iPadOS(iPad)で、WebRTCを使ったカメラのズームをしたい

wiz_asura

総合スコア15

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

WebRTC

WebRTC(Web Real-Time Communication)とは、プラグイン無しでウェブブラウザ間の音声通話・ビデオチャットなどリアルタイムコミュニケーションができるオープンフレームワークです。W3CがAPIレベルで、IETFがプロトコルレベルでそれぞれ標準化が進められています。

0グッド

0クリップ

投稿2020/07/27 06:23

ブラウザからWebRTC APIを利用してカメラを操作し、ズーム(拡大縮小)を行いたい。

ブラウザから、WebRTC API を使って、撮影するページを作成中です。
PC、Android、iOS(iPadOS)のブラウザで動作を確認しています。
カメラ動作、および撮影したデータをファイル保存までは実装出来たのですが、
ズーム機能を付けようとしたところ、Android(Chrome)以外で動作しませんでした。

具体的には、getSettings() メソッドで取得した情報で、zoom が利用不可となっていました。

恐らくiOSなどでは、別の方法での実装が必要かと思うのですが、
何か良いサンプルか、方式がありましたら、教えてきただけないでしょうか?

なお、以下のサイトを参考に実装しています。
https://googlechrome.github.io/samples/image-capture/update-camera-zoom.html

該当ソースコード(抜粋)

Javascript

1【Javascript部分】 2 3window.onload = () => { 4 const video = document.querySelector("#camera"); 5 /** 6 * カメラを<video>と同期 7 */ 8 navigator.mediaDevices.getUserMedia(constraints) 9 .then( (stream) => { 10 video.srcObject = stream; 11 video.onloadedmetadata = (e) => { 12 video.play(); 13 }; 14 }) 15 .catch( (err) => { 16 console.log(err.name + ": " + err.message); 17 }); 18 /** 19 * ズーム(-)ボタン 20 */ 21 document.querySelector("#zoomDown").addEventListener("click", () => { 22 zoom(video, -1); 23 }); 24 /** 25 * ズーム(+)ボタン 26 */ 27 document.querySelector("#zoomUp").addEventListener("click", () => { 28 zoom(video, +1); 29 }); 30}; 31 32function zoom(video, scale) { 33 if (video.srcObject !== undefined && video.srcObject !== null) { 34 if (video.srcObject.active) { 35 var tracks = video.srcObject.getTracks(); 36 if (tracks.length > 0) { 37 var settings = tracks[0].getSettings(); 38 var capabilities = tracks[0].getCapabilities(); 39 var zoom = settings.zoom; 40 if (capabilities.zoom !== undefined) { 41 if (settings.zoom !== undefined) { 42 if (scale > 0) { 43 // 引数が0より大きい場合、拡大する 44 zoomSize = zoomSize + capabilities.zoom.step; 45 if (zoomSize > capabilities.zoom.max) { 46 zoomSize = capabilities.zoom.max; 47 } 48 } else { 49 // 引数が0より小さい場合、縮小する 50 zoomSize = zoomSize - capabilities.zoom.step; 51 if (zoomSize < capabilities.zoom.min) { 52 zoomSize = capabilities.zoom.min; 53 } 54 } 55 tracks[0].applyConstraints({ advanced : [{ zoom: zoomSize }] }); 56 } 57 } else { 58 // WebRTCズーム非対応の場合 59 } 60 document.querySelector("#log").value = log; 61 } 62 } 63 } 64} 65 66HTML Body以下】 67 <video autoplay muted playsinline id="camera" width="600" height="600"></video> 68 <form> 69 <button type="button" id="zoomDown" >ズーム(-)</button> 70 <button type="button" id="zoomUp" >ズーム(+)</button><br/> 71 </form> 72

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問