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>
こちらのコードを応用したらできるかなと思ったのですが、
初心者すぎて応用の仕方が分からず困っています。
回答のほどよろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2022/04/23 16:24 編集