[編集済み] OculusGo = Android 用のアプリケーションを準備中です シーンには、ビデオ クリップで表される 4 人のキャラクターがいます。動画のサイズはそれぞれ 10 MB ~ 30 MB です。
すべての動画はシェーダー GoogleVR/Unlit/TransparentOverlay で動画は WebM/VP9/キープ アルファに Adobe エンコーダーでエンコードされています。ビデオは、Android の VP8 (再び) に統一されてさらにトランスコードされました。
ビデオはシーンの開始時にリソース フォルダからロードされ、再生するときに VideoPlayer.Play() が各ビデオから呼び出され、最後にすべて一緒に再生されます。(次々に開始し、一緒に続行します)。
問題は次のとおりです。3 番目のビデオが再生されるはずのときに、アプリがクラッシュします。ビデオを「準備」してもクラッシュしませんが、「VideoPlayer.Play()」でのみクラッシュします
これが私の現在のコードです:
public float waiting;
public AudioSource characterAudio;
VideoPlayer videoPlayer;
bool videoStarted = true;
void Awake () {
videoPlayer = GetComponent<VideoPlayer>();
}
private void Update()
{
if (characterAudio != null)
{
if (characterAudio.isPlaying && videoStarted)
{
StartCoroutine(StartVideo());
videoStarted = false;
Debug.Log(characterAudio.name + " called once from update");
}
}
}
IEnumerator StartVideo()
{
yield return new WaitForSeconds(waiting);
videoPlayer.enabled = true;
videoPlayer.Prepare();
while(!videoPlayer.isPrepared)
{
Debug.Log("video is preparing");
yield return null;
}
videoPlayer.Play();
Debug.Log("videoStarted, char name is: " + characterAudio.name);
}
これは、logcat から取得したエラーです (コマンドを使用: logcat |grep -i unity)
ActivityManager: ActivityRecord を強制的に削除する
コンシューマーが入力チャネルを閉じたか、エラーが発生しました。イベント=0x9
チャネルは修復不可能なほど壊れており、破棄されます!
InputDispatcher: すでに未登録の入力チャネルを登録解除しようとしました
助けてください、私はこれらのビデオを同時に実行できるように2 週間試みてきました。
また、ここで別のスレッドの使用について読みました: https://gamedev.stackexchange.com/questions/113096/how-to-not-freeze-the-main-thread-in-unity とここで同時に再生されるビデオについて: Unity アプリがフリーズします複数のビデオを同じシーンにロードする場合
logcat (unity one ではない) を実行したところ、ビデオの準備が終了した直後に得られたものです。