【解決済み】トリアコンタン様の「動画のピクチャ表示プラグイン」について

kagami

ユーザー
いつもお世話になっています。
この場をお借りして、質問させていただきます。

トリアコンタン様の「動画のピクチャ表示プラグイン」
https://triacontane.blogspot.com/2017/08/blog-post.html
についてなのですが
・”test01”と”test02”という二種類の動画を用意する。
・”test01”はループせずに、動画が終了と同時に”test02”を再生する
・”test02”はループする。
・”test01””test02"ともに、決定ボタンやキャンセルボタンを押すとスキップできる。
・”test01”をスキップした場合も、”test02”の再生を開始する。
・以下”test03”等に続く。
といったイベントを組みたいと思っています。
教えていただいたスクリプトなどを利用し
何とか、上記の動作ができるようになったのですが
”test01”から”test02”に切り替わる際に、どうしても数フレームの途切れが発生してしまいます。
具体的には動画と動画の間に、マップが見えてしまう感じです。

組んでみたイベントはこうなっています↓
======================================================
◆ピクチャの表示:#2, 00NoImage, 左上 (0,0), (100%,100%), 255, 通常
◆プラグインコマンド:MP_動画設定 test01
◆ピクチャの表示:#2, なし, 左上 (0,0), (100%,100%), 255, 通常
◆プラグインコマンド:MP_ループ設定 2 off
◆ピクチャの表示:#1, 00Black, 左上 (0,0), (100%,100%), 255, 通常
◆スクリプト:SceneManager._scene._spriteset._pictureContainer.children.some(function(sprite) {
:     : if (sprite.picture() === $gameScreen.picture(2)) {
:     : $gameTemp._pictureSprite = sprite;
:     : return false;
:     : }
:     :});
◆ループ
◆条件分岐:スクリプト:!$gameTemp._pictureSprite.bitmap
◆ループの中断

:分岐終了
◆ウェイト:10フレーム
◆条件分岐:ボタン[決定]が押されている
◆ループの中断

:それ以外のとき
◆条件分岐:ボタン[キャンセル]が押されている
◆ループの中断

:分岐終了

:分岐終了

:以上繰り返し
◆プラグインコマンド:MP_動画設定 test02
◆ピクチャの表示:#2, なし, 左上 (0,0), (100%,100%), 255, 通常
◆プラグインコマンド:MP_ループ設定 2 on
◆ループ
◆ウェイト:10フレーム
◆条件分岐:ボタン[決定]が押されている
◆ループの中断

:それ以外のとき
◆条件分岐:ボタン[キャンセル]が押されている
◆ループの中断

:それ以外のとき

:分岐終了

:分岐終了

:以上繰り返し
◆プラグインコマンド:MP_動画設定 test03
◆ピクチャの表示:#2, なし, 左上 (0,0), (100%,100%), 255, 通常
◆プラグインコマンド:MP_ループ設定 2 on
◆ループ
◆ウェイト:10フレーム
◆条件分岐:ボタン[決定]が押されている
◆ループの中断

:それ以外のとき
◆条件分岐:ボタン[キャンセル]が押されている
◆ループの中断

:それ以外のとき

:分岐終了

:分岐終了

:以上繰り返し
======================================================
とりあえず、ピクチャ1に黒いピクチャを表示して、少しだけ誤魔化している形です。
”test02”と”test03”の間には、気になるほどの途切れは見えないです。
また、同じくトリアコンタン様の「FixImageLoading」プラグインも使用してみたのですが
特に効果は無いようでした。

ツクールMVのバージョンは1.6.1です。


どなた様か、この動画の動画の間の途切れを無くす、もしく少なくする方法をご存じでしたら
ご教示いただければ幸いです。

●追記----------------------------------
質問をしてからも自分で色々試したのですが、やはり解決できません。

そして「”test02”と”test03”の間には、気になるほどの途切れは見えないです」と書いたものの
ツクールで作成している際には問題なく動作しているのですが
デプロイメントをすると、”test02”と”test03”の間に途切れが発生するようになっていました。
また、”test02”のループとループの間にも
何故か、デプロイメントすると途切れが発生します。
原因がわからないので、暗号化、非暗号化の両方で試しましたが変わりません。
他にも、ツクール自体がすでに更新したと聞いたので無駄かと思いましたが
以前教えていただいた、「Nw.js」を最新版(0.38.4 0.38.0 0.37.0)に変更する方法を試してみましたが
仕様が変わっているのか、そもそも動画自体が再生されませんでした。

今のところ、考え付く方法は
「FixImageLoading」プラグインと同じように
次の動画が再生されるまで、動画と同じ画像を表示しておくぐらいです。
ただ、動画の数自体が数百本以上なる予定な上に、
動画をレイヤー構造で重ねて表示する方式にしたいので
作業量的に考えると、できれば避けたい手段です。

●追記2ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
根本の解決にはなりませんが、
とりあえず動画と動画の間に動画の最後と同じ画像を表示させようと思い
トリアコンタン様の「画面キャプチャ管理プラグイン」
https://triacontane.blogspot.com/2016/02/blog-post_27.html
をお借りして、
動画再生中の画面をキャプチャし、それを動画の下に表示することで
若干の違和感はあるものの、それらしく見えるようになりました。
ただ、正確に動画の最初や最後のフレームをキャプチャする方法がわからず
現状では、スキップ判定用のループに画面のキャプチャと表示を入れており
10フレームごとに画面キャプチャを繰り返している形になっているので
処理として問題がないのか、若干不安です。

また、動画の途切れとは直接関係ないと思うのですが
試行錯誤しているうちに、もう一つ問題が見つかりました。
自分は実際には、「動画のピクチャ表示プラグイン」を使わせていただき
動画の上に透明情報のある動画を重ねて、同時に再生しようとしています。
再生自体は問題なく出来るのですが、ループ再生を繰り返しているうちに
少しづつ、二つの動画の動きがずれてきてしまいます。
将来的には二つだけではなく、
いくつかの動画をレイヤー構造のように重ねて再生したいと考えていますが
現状だと、完全に同期させる方法がわからず途方に暮れています。


参考用のプロジェクトも用意しましたので
ご協力いただける方は、ダウンロードしていただけると幸いです。
http://firestorage.jp/download/8b95e23007e9db642226c56db2538717fb6de567
ダウンロードパスワード fxyrj2tj
 
最後に編集:

トリアコンタン

モデレーター
スタッフ
モデレーター
こんにちは!
プラグインのご利用ありがとうございます。
現象を確認しますのでしばらくお待ちください。
 

kagami

ユーザー
トリアコンタン様

ご返信、ありがとうございます。
ご確認していただけると、とても助かります!
もし、わかりにくかったり、他の動画・プロジェクトなどが必要な場合は
おっしゃっていただければ、出来る限り用意いたします。

よろしくお願い致します。
 

トリアコンタン

モデレーター
スタッフ
モデレーター
ご返信、ありがとうございます。
ご確認していただけると、とても助かります!
もし、わかりにくかったり、他の動画・プロジェクトなどが必要な場合は
おっしゃっていただければ、出来る限り用意いたします
お疲れさまです。
本件調査しています。

「動画の動画の間の途切れを無くす」については、動作再生終了後に動画を自動削除せず最後のフレームで止めておくことで
対応できるかもしれません。(ただ、その場合、二つめの動画のピクチャ番号を変える必要があります)

ただ問題は二つの動画をズレなく同期再生させる方法で、最初は再生開始のタイミングがズレているせいかと思いましたが、
どうやら問題はそれだけではないようで、HTML5のvideo要素の再生位置を計測していても少しずつズレていきます。

後者についてはもっと深い調査が必要と思われますが、根本的な解決は難しいかもしれません。
 

kagami

ユーザー
トリアコンタン様

お忙しい中でのご調査、ありがとうございます。

HTML5側の問題だとすると、かなり難しそうですね…。
自分ではとても根本的な解決はできませんが
何とかMV側でずれなどの挙動を誤魔化していけないか考えてみます。
 

トリアコンタン

モデレーター
スタッフ
モデレーター

kagami

ユーザー
トリアコンタン様

プラグインのご更新、ありがとうございます。
早速、お借りしてみたいと思います。
 

kagami

ユーザー
トリアコンタン様

まずは、お詫びを申し上げます。
サンプルとしてお渡ししたプロジェクトの動画ですが
test04とtest04A・test04Bならびに
test05とtest05A・test05Bの動画の長さが、厳密には完全に同じではなく
動画の最後に1/60秒ほどの差があることが確認できました。
サンプルとして不適切なものを渡してしまい
ご迷惑をかけ大変申し訳ありません。

ただ、念のため他の動画も確認しましたが
AfterEffects上では瞬きや服などを除いて、動き自体は一致していました。
しかし、ツクールMVで同時に再生しようとすると、
何故か再生開始直後からほぼ必ず差が発生してしまい
動画自体に問題があるのではないかと思えてきました。
とはいえ上記の6本の動画以外では
動画編集ソフトのAfterEffectsで確認しても動画の長さや動きの差が見当たらず
結局のところ、動画に問題がないのかどうかもわからない次第です。
不確かな情報でお騒がせして申し訳ありませんでした。
完全な形でのアルファチャンネル入りの動画の作成法が怪しい現状では
動画が原因かもしれず、厳密な挙動の調査もしようがないと思いますので
今回の質問は、撤回させていただこうと思います。
わざわざお時間を割いていただき申し訳ありませんでした。
今後はこういったことがないよう、慎重に確認をしようと思います。
ただ、自分自身での動作の検証自体は今後も続けていきますので
もし何かご協力できるようなことがあればご遠慮なくお申し付けください。

「動画ピクチャを自動削除せず最終フレームで静止したままにする機能」は問題なく動作できることを確認しました。
これだけでも大変助かります。
本当に、ありがとうございました。
 
最後に編集:

kagami

ユーザー
トリアコンタン様

大変、お世話になっております。kagamiです。
あれからも一応、更新していただいたプラグインでの動作の確認を続けていたのですが
何点か気づきがあったので、報告だけでもさせていただこうと思います。

自分が試した限りではどうやら、
透明情報のない動画同士、
もしくは透明情報を持った動画同士を同時に再生する場合には
ずれはほとんど発生しないようです。
AfterEffects上で、動き、長さ共に違いの無いことを確認した色違いの動画を
透明情報のない動画2種
透明情報の入った動画2種
計4種類を新たに用意し
いろいろな組み合わせで再生してみましたが
ずれが発生するのは、透明情報のない動画と透明情報のある動画を同時に再生する時だけのようです。
ただ、動画の透明情報の有無ではなく、単純に動画容量の差の可能性もありますが
同じ動きで容量だけ極端に違う動画を作る方法はわからずその部分は検証できませんでした。
また、AfterEffects上で差異が確認できないだけで、
もし自分では確認できない何らかの差が動画にあった場合は
それが原因でずれが発生しているの可能性もあります。

一応こちらに自分が確認のために作成したプロジェクトをアップロードしておきます。

http://firestorage.jp/download/af841b7ef13ed2e4abf641b20f0f8063ade9db6b
ダウンロードパスワード 9x9sw38e

ツクールのバージョンは、1.6.2です。
また、余談ですが
このツクールのバージョンであれば、
透明動画の再生も「Nw.js」の更新をせずに問題なく再生が可能になっていました。

※報告させていただいた、デプロイメント後のループ間の動画の途切れは
 RPGツクールMV 1.6.1のバグで、
 デプロイメント後に強制的にcanvasモードになっているのが原因のようでした。
 こちらも不正確な情報でお騒がせして申し訳ありませんでした。
 
最後に編集:

トリアコンタン

モデレーター
スタッフ
モデレーター
大変、お世話になっております。kagamiです。
あれからも一応、更新していただいたプラグインでの動作の確認を続けていたのですが
何点か気づきがあったので、報告だけでもさせていただこうと思います。
ありがとうございます!
頂いたプロジェクトで追加検証いたします。
 

kagami

ユーザー
トリアコンタン様

ご返信、ありがとうございます。
不確かな情報ばかりで申し訳ないですが
検証していただけるのはとても嬉しいです。
 

トリアコンタン

モデレーター
スタッフ
モデレーター
大変、お世話になっております。kagamiです。
あれからも一応、更新していただいたプラグインでの動作の確認を続けていたのですが
何点か気づきがあったので、報告だけでもさせていただこうと思います。
こんにちは!
本件について調査しました。

現在の仕様では、動画はロード完了すると自動で再生されます。
よって同時に読み込みを始めた場合でも再生開始のタイミングがわずかにズレる場合があります。
なので、複数の動画を並行してロードしているときは、すべての動画のロードが完了してから再生するよう変更しました。

次に問題の件ですが、上記対応で再生開始タイミングを揃えても実際の動画の再生には僅かなズレがあり
透過情報を持たない動画の方が少し遅れるようです。
さらにループ設定をしているとループの度に遅れが増大していきます。

ループによるズレの増大に関しては「一定フレームで動画を中断させるコマンド」により終了タイミングを
完全に一致させれば解消できました。
ただ、そもそもの透過情報の「あり」「なし」での再生タイミングのズレの解消には至りませんでした。
それでもよろしければお試しください。

1.6.0 2019/06/29
複数の動画を並行してロードしているときは、すべての動画のロードが完了してから再生するよう変更しました。
一定フレームで動画を中断させるコマンドを追加
https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/MoviePicture.js
 

kagami

ユーザー
トリアコンタン様

ご対応、ありがとうございます。
ズレに関しては、根本的な解決は難しいようなのであきらめ
解決とさせていただきます。
ただ、今後もプラグインをお借りしてテストを続けますので
また何かわかりましたら、報告させていただこうと思います。

お忙しい中で調査していただき、重ねてお礼を申し上げます。
 
トップ