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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

AR(Augmented Reality)

AR(Augmented Reality)とは、拡張現実のことです。人が認識する現実の環境で視覚・聴覚などの知覚が感知する情報をコンピュータで拡張する技術、もしくはその環境そのものを表す言葉です。

Q&A

1回答

4470閲覧

AR.jsを使って音声ありの動画を再生したい

frswntk

総合スコア0

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

AR(Augmented Reality)

AR(Augmented Reality)とは、拡張現実のことです。人が認識する現実の環境で視覚・聴覚などの知覚が感知する情報をコンピュータで拡張する技術、もしくはその環境そのものを表す言葉です。

0グッド

0クリップ

投稿2020/08/31 09:51

編集2020/08/31 10:15

AR.jsを使って音声ありの動画を再生したいです

今、AR.jsを用いて動画を再生しようとしています。

<script src="https://aframe.io/releases/0.9.2/aframe.min.js"></script> <script src="https://cdn.rawgit.com/jeromeetienne/AR.js/1.7.7/aframe/build/aframe-ar.js"></script> <body style='margin : 0px; overflow: hidden;'> <a-assets> <video id="ar-video" autoplay loop="true" preload="auto" src="test0818.mp4"></video> <audio src="videopath" autoplay></audio> </a-assets> <!-- デバッグ用の画面表示、VR用のボタンをそれぞれ非表示に --> <a-scene embedded arjs="debugUIEnabled:false;" vr-mode-ui="enabled: false"> <!-- 今回作成した『.patt』ファイルを読み込む --> <a-marker type='pattern' url='pattern-omotaku.patt'> <a-video src="#ar-video" width="4.6" height="4.6" position="0 0 0" rotation="270 0 0" play="true"></a-video> </a-marker> <a-entity camera></a-entity> </a-scene> <script> window.addEventListener('click', function () { var v = document.querySelector('#ar-video'); v.play(); audioElement.play(); }); </script> </body> </html>

このようなコードを書くと一応音声ありで動画を再生することができるのですが、
1度再生してしまうと、マーカーが見えなくなっても音声だけ再生され続けてしまうので
マーカーを認識したら再生、マーカーが認識できなかったら停止するようにするには
どのようにしたら良いでしょうか。

わたし自身コードに不慣れなため、実際のコードをご提示して回答いただけるととても助かります。

##追記

button.addEventListener('touchstart', () => { audio.muted = true; // ミュート有効 audio.play(); // 動画再生 audio.pause(); // 動画停止 audio.muted = false; // ミュート無効 audio.currentTime = 0; // 開始秒数を戻す }); // マーカー認識されたら... marker.addEventListener('markerFound', () => { audio.play(); // 動画再生 });

このようなものを試してみましたがダメでした

<html> <script src="https://aframe.io/releases/0.8.0/aframe.min.js"></script> <script src="https://cdn.rawgit.com/jeromeetienne/AR.js/1.6.2/aframe/build/aframe-ar.js"> </script> <script> AFRAME.registerComponent('registerevents', { init: function () { var marker = this.el; // マーカーを検出したイベントの登録 marker.addEventListener('markerFound', function () { var markerId = marker.id; console.log('markerFound', markerId); // アニメーションの開始 document.querySelector('#box').emit('markerfound'); }); // マーカーを見失ったイベントの登録 marker.addEventListener('markerLost', function () { var markerId = marker.id; console.log('markerLost', markerId); // アニメーションの停止 document.querySelector('#box').emit('markerlost'); }); } }); </script> <body style="margin : 0px; overflow: hidden;"> <a-scene embedded arjs> <a-marker preset="hiro" id="marker-hiro" registerevents> <a-box id="box" position="0 0.5 0" wireframe="true"> <a-animation attribute="position" from="0 0.5 0" to="0 2.5 0" dur="5000" repeat="indefinite" begin="markerfound" end="markerlost"> </a-animation> </a-box> </a-marker> <a-entity camera></a-entity> </a-scene> </body> </html>

こちらのコードを応用したらできるかなと思ったのですが、
初心者すぎて応用の仕方が分からず困っています。
回答のほどよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

質問文に追記されている、「markerFound / markerLost」の処理を利用すると以下の様な実装で再生・一時停止されませんでしょうか。

変更した大きな箇所としては以下

  • <script>タグ内で、「markerFound / markerLost」のイベントを登録(質問に追記されている内容を利用)
  • Videoオブジェクト格納用の変数を定義
  • 「markerFound / markerLost」それぞれのイベントで、Videoオブジェクトに対して再生・一時停止の処理を実行

html

1<html> 2<script src="https://aframe.io/releases/0.9.2/aframe.min.js"></script> 3<script src="https://cdn.rawgit.com/jeromeetienne/AR.js/1.7.7/aframe/build/aframe-ar.js"></script> 4 <body style='margin : 0px; overflow: hidden;'> 5 <a-assets> 6 <video id="ar-video" autoplay loop="true" preload="auto" src="test0818.mp4"></video> 7 <audio src="videopath" autoplay></audio> 8 </a-assets> 9 10 <!-- デバッグ用の画面表示、VR用のボタンをそれぞれ非表示に --> 11 <a-scene embedded arjs="debugUIEnabled:false;" vr-mode-ui="enabled: false"> 12 <!-- 今回作成した『.patt』ファイルを読み込む --> 13 <!-- ※こちらで試す時には、"hiro"のマーカー定義に変更して確認しました --> 14 <a-marker type='pattern' url='pattern-omotaku.patt'> 15 <a-video src="#ar-video" width="4.6" height="4.6" position="0 0 0" rotation="270 0 0" play="true"></a-video> 16 </a-marker> 17 <a-entity camera></a-entity> 18 </a-scene> 19 20 <script> 21 // ビデオ格納用の変数定義を追加 22 var video = null; 23 24 AFRAME.registerComponent('registerevents', { 25 init: function () { 26 var marker = this.el; 27 28 // マーカーを検出したイベントの登録 29 marker.addEventListener('markerFound', function () { 30 31 // マーカー認識したら、ビデオ再生 32 if (video == null) { 33 video = document.querySelector('#ar-video'); 34 } 35 video.play(); 36 }); 37 38 // マーカーを見失ったイベントの登録 39 marker.addEventListener('markerLost', function () { 40 41 // マーカー認識が外れたら、、ビデオ停止 42 video.pause(); 43 }); 44 } 45 }); 46 47 /* ビデオクリックで再生するイベントは、一旦コメントアウトしました 48 window.addEventListener('click', function () { 49 video = document.querySelector('#ar-video'); 50 video.play(); 51 }); 52 */ 53 </script> 54 </body> 55</html>

投稿2020/09/08 15:22

tsuki01

総合スコア1751

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

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

退会済みユーザー

退会済みユーザー

2022/04/23 16:24 編集

僕も困っていたもで助かります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問