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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

iframe

HTMLのタグ<iframe>です。<iframe>は、ドキュメント内に""inline frame""を作るHTML要素で、同じページでセパレートしているドキュメントが表示されるようにします。

Three.js

Three.jsはWebGLをサポートしているJavaScriptの3D描画用ライブラリです。

JavaScript

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

HTML

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

Q&A

解決済

1回答

5689閲覧

再生ボタンや一時停止ボタンを追加して動画再生をコントロールできるようにしたい

snooooopy_16

総合スコア15

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

iframe

HTMLのタグ<iframe>です。<iframe>は、ドキュメント内に""inline frame""を作るHTML要素で、同じページでセパレートしているドキュメントが表示されるようにします。

Three.js

Three.jsはWebGLをサポートしているJavaScriptの3D描画用ライブラリです。

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2017/02/07 04:50

###前提・実現したいこと
google vr viewで画面をタップもしくはボタンなどで再生,一時停止がコントロールできるようにしたい。
また,早送りや巻き戻しのコントロールバーを追加したい。

###発生している問題・エラーメッセージ

PCだとロードが完了すると動画が自動再生されてしまい,また一時停止することができません。 スマホだとロードが終わると再生ボタンが表示されますが,一時停止することができません。 js初心者でgithubから落としてきたサンプルコードを読み解くことができません。 play()やpause()メソッドは準備されているように思うのですか,具体的な実装方法がいまいち分かりません。 巻き戻しや早送りについてはライブラリにメソッドは準備されていないように思うのですが,実現は不可能なのでしょうか。

###該当のソースコード

html

1<!DOCTYPE html> 2<html> 3 <head> 4 <title>VR View - video example</title> 5 <meta name=viewport content="width=device-width, initial-scale=1"> 6 <meta charset="utf-8" /> 7 <link href="//fonts.googleapis.com/css?family=Lora|Open+Sans" rel="stylesheet" type="text/css"> 8 <style> 9 html, body{ 10 width: 50%; 11 height: 50%; 12 margin: 0; 13 } 14 </style> 15 </head> 16 17 <body> 18 19 <h1>VR Test</h1> 20 21 <!--<iframe frameborder="0" width="100%" scrolling="no" allowfullscreen src="vrview/index.html?video=/vrview/examples/video/congo_2048.mp4&is_stereo=true"></iframe>--> 22 <iframe frameborder="0" width="100%" height="100%" scrolling="no" allowfullscreen src="vrview/index.html?video=//meditatesttaito.streaming.mediaservices.windows.net/bd6d1290-74f2-44e4-9386-d1ebc8c3eea7/Sample1.ism/manifest(format=mpd-time-csf).mpd"></iframe> 23 24 </body> 25 26</html> 27

他のソースはgoogle vr viewのgithubから落としてきたままのソースコードを使っています。

###補足情報(言語/FW/ツール等のバージョンなど)
google vr view for web
https://github.com/googlevr/vrview

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

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

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

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

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

guest

回答1

0

ベストアンサー

今までは、<iframe>を配置して表示しましたが、プレイヤーの制御を行いたい場合は、<iframe>の配置ではなくJavaScriptのAPIを使用する方法に変えなければなりません。APIを実行すればAPI側で<iframe>を配置するとともにプレイヤーを制御できるようになります。そのためには、<div id="vrview">フルスクリーンではないときの表示させたい位置に配置します。

js

1window.addEventListener('load', onVrViewLoad); 2var vrView = null; 3var state = null; 4function onVrViewLoad() { 5 vrView = new VRView.Player('#vrview', { 6 video: '//meditatesttaito.streaming.mediaservices.windows.net/bd6d1290-74f2-44e4-9386-d1ebc8c3eea7/Sample1.ism/manifest(format=mpd-time-csf).mpd', 7 width: '100%', 8 height: '100%' 9 }); 10 vrView.on('ready', function () { 11 // PCで自動再生されないようにする 12 vrView.pause(); 13 state = 'pause'; 14 }); 15 vrView.on('click', function () { 16 // タップするたびに再生・一時停止を繰り返す 17 if (state === 'pause') { 18 vrView.play(); 19 state = 'play'; 20 } else { 21 vrView.pause(); 22 state = 'pause'; 23 } 24 }); 25}

このようなコードを書くことで、タップするたびに再生・一時停止を繰り返すようにできます。
ただし、残念ながらこのAPIを使ってもループをオフにすることはできないようです。
サンプル
サンプルソース

投稿2017/02/07 06:02

turbgraphics200

総合スコア4269

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

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

snooooopy_16

2017/02/17 09:14

ありがとうございます! 早送りや巻き戻しをするためのコントロールバーもJavaScriptのAPIを使えば実現可能ですか?
turbgraphics200

2017/02/18 11:20

APIでは不可能ですね。 APIは使用せずに、プレイヤーを自分のところでホスティングすれば不可能ではありませんが。。。特にスマホVR(左右2つに分かれて表示刺されるモード)の場合は作りこみが必要となります。
snooooopy_16

2017/02/19 02:45

なるほどです。 ループ再生のONとOFFは現状APIとして用意されていないため、できないという認識であっていますか? 自分でメソッドを書くと制御することは可能でしょうか?
turbgraphics200

2017/02/19 02:53

ええ、前回のコメントでも書きましたが、プレイヤー(iframe内のコンテンツ)も自分でホスティングすればという条件がつきますが、プレイヤーのスクリプトにアクセスできますので、可能と思います。
snooooopy_16

2017/02/19 03:29

ありがとうございます。 ちなみにですが、html5にはループの制御や再生時間取得などのapiが用意されていますが、googlr vr viewでしか実現できないことはあるのでしょうか。これまでgoogle vr viewを利用して360度動画の再生を実現してこようとしましたが、html5を利用したほうがapiが充実しており、簡単につくれてしまうのではと少し思ったのですが。。
turbgraphics200

2017/02/19 03:44

html5のvideoはあくまでも2Dな動画にしか対応していませんが、google vr view は、videoとWebGLを組み合わせて360度動画に対応させております。WebGLの技術をお持ちでしたら簡単に作成することができるでしょう。
snooooopy_16

2017/02/19 04:24

無知で申し訳ないのですが、ホスティングとは具体的にどういうことなのでしょうか?
turbgraphics200

2017/02/19 05:56

様々なサービスにもホスティングという言葉が使用されますが、この場合はウェブサーバーでコンテンツを配信(htmlとかcssとかvideo)することをホスティングといい、自分ところのウェブサーバーで配信しているかということです。
snooooopy_16

2017/02/19 08:22

google vr viewには以下のようなAPIは用意されていないということですね。。 ・ループ再生する設定のON/OFF ・再生後に何らかの処理をするコールバック関数の設定  or 再生後に遷移するURLの設定  or 再生中/終了や再生時間を取得できる何か 解決策としては、ホスティングして、 /vrview/src/embed/配下にあるようなjsにアクセスし、これらのjsに制御を処理を書き加えればループを制御できるということでしょうか?
turbgraphics200

2017/02/19 08:29

ええそこにアクセスすれば制御できるようになります。
snooooopy_16

2017/02/19 08:38

embed配下のファイルとbuild配下のファイルの違いは何ですか?
snooooopy_16

2017/02/19 08:39

embed配下のファイルとbuild配下のファイルの違いは何ですか?
snooooopy_16

2017/02/19 08:39

embed配下のファイルとbuild配下のファイルの違いは何ですか?
turbgraphics200

2017/02/19 08:44 編集

embed配下のファイルを一つにまとめたのがbuild配下にあるembed.js(embed.min.jsはembed.jsを圧縮したもの)となります。
snooooopy_16

2017/02/19 08:47

adaptive-player.jsなどがbuild配下に無いのはなぜでしょうか??
turbgraphics200

2017/02/19 08:57 編集

あ、いや、ですからembedフォルダ配下のすべてのファイルを一つのembed.jsファイルにまとめているのです。
snooooopy_16

2017/02/19 09:00

self hostingにして、embed.jsのループをfalseにしてみたのですが、ループの制御はとまりませんでした。。
snooooopy_16

2017/02/19 09:00

先程すみません。理解しました。
snooooopy_16

2017/02/19 09:06

htmlに以下を追加するだけではだめでしょうか? ここでいうvideo変数には何をいれるべきでしょうか? function AdaptivePlayer() { this.video = document.createElement('video'); // Loop by default. this.video.setAttribute('loop', false); }
snooooopy_16

2017/02/19 10:25 編集

呼び出し部分は<script src="/vrview/build/embed.min.js"></script>このように書いてます。
turbgraphics200

2017/02/19 11:43 編集

返事が遅くなり申し訳ありません。 this.video.setAttribute('loop', false); もそうですが、ここだけではだめでした。ほかにも、再生位置が最後になったら再生位置を先頭に持ってくる(video.currentTime = 0)の処理がありそこも外さなければなりません。 ちょっとサンプル作りました。 https://turbographics2000.github.io/google_vr_for_web_test/test2.html クリックで再生/一時停止、シークバーでシークできます。
turbgraphics200

2017/02/19 11:32

てか今更気づいたんですけどアイコン/ID変えたんですねw
snooooopy_16

2017/02/19 13:09

ありがとうございます!iframeに戻りましたね。 少し自分の環境でも動かしてみます! googleアカウントで登録していたので名前も顔もバレやすい状態だったので変えました笑
snooooopy_16

2017/02/19 14:14

環境で動かすことはできたのですが、簡単に追加したファイルや修正箇所についてご説明いただけないでしょうか。。?
turbgraphics200

2017/02/20 14:46

vrview/index.htmlに書かれているJSのコードと、embed.jsには追加や削除した行に★つけてます。サンプルページ表示してChromeのデベロッパーツールなどで確認してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問