kazumasa
(kazumasa)
1
複数の動画を同時に再生したときに発生するラグについて質問します。
現在GearVRで主に動画を見るコンテンツを制作しています。
動作自体は複数の動画を再生することには成功しているのですが、再生にラグが発生してしまいます。
ゲームを実行すると自動的に動画が再生されるようにしています(BeginPlayで実行される)。
動画を読み込む際に発生するものだと思うのですが、うまいこと解決する方法はあるのでしょうか?
読み込む動画の詳細を下記の通りです。
- コンテナ: MP4
- コーデック: H.264
- 動画サイズ: 650MB
- 動画再生時間: 3分
- 解像度: 2048*2048
- 補足: ステレオパノラマ動画なのでこれ以上サイズを落とすのは難しそうです。
他にもいくつか動画があるのですが、基本的には同じようなサイズなので下記にまとめて書きます。
- コンテナ: MP4
- コーデック: H.264
- 動画サイズ: 1MB 以下
- 動画再生時間: 5秒~10秒
- 解像度: 512*512
- 補足: 動画は5本ほどあり、上のパノラマ動画のタイミングに合わせて再生されるようになっています。
BPのスクショも添付いたします。
添付画像の赤丸①の処理の後に②が再生されるようになっています。
このPlayの再生の読み出しが時間がかかっているのではないかと考えております。
動画を読み込む際に発生するものだと思うのですが
おそらくそのとおりかと思います
再生開始を同一タイミングで行いたい場合は、少なくとも再生開始イベントの同期をとる必要があると考えます
画像のBPでは、別々のEventDispatcherに紐付いたそれぞれのEventでPlayを実行していますが、
これらは確実に別々のタイミングで実行されます
同時に再生開始したいのであれば、両方再生可能になるまで待ち、一つのイベントで同時に再生を開始する工夫が必要になります
ただし、動画はストリーム再生ですので、再生または配信の環境によってはどうしてもラグが発生する可能性もあり、この部分はBPの工夫だけでは回避できないと考えています
kazumasa
(kazumasa)
3
早速の回答ありがとうございます。
回答について、2つ質問があります。
- 私の技術的に未熟な部分があって申し訳ないのですが、「一つのイベントで同時に再生」というのは2番目に使用しているEventDispatcherでplayノードをまとめて再生するということで合っていますでしょうか?画像のように修正しました。
- ストリーム再生以外の方法はありますでしょうか?一度ダウンロードやキャッシュをとるなどの方法はありますでしょうか?
T_Sumisaki
(T_Sumisaki)
4
私の技術的に未熟な部分があって申し訳ないのですが、「一つのイベントで同時に再生」というのは2番目に使用しているEventDispatcherでplayノードをまとめて再生するということで合っていますでしょうか?画像のように修正しました。
画像のような構成だと、1つ目のOpenSourceが先に終われば問題ないですが、もし2つ目が先に終わってしまった場合、1つ目のOpenSourceが終わっていないタイミングでPlayされることになります
下の画像は一例ですが、変数を使って、すべてのMediaPlayerのOpenSourceが終わるのを検知する方法を取るのが良いと思います
ストリーム再生以外の方法はありますでしょうか?一度ダウンロードやキャッシュをとるなどの方法はありますでしょうか?
別途ファイルの形式でダウンロードすれば、ローカル内での読み込みになるため、遅延は少なくなります
組み込み可能な動画であれば、プロジェクトに組み込んでしまうのが良いと思います
kazumasa
(kazumasa)
5
返信ありがとうございます。
回答して頂いた方法を試してみよう思います。