CRIWARE Unity Plugin Manual  Last Updated: 2024-04-24
解像度や再生本数についての注意点
本項ではAndroid端末とH.264ムービーのスペック、再生本数の組み合わせなどにおける注意点について説明します。

H.264ムービー再生に失敗するケースについて

端末/OSによってはH.264ムービーを再生する際、以下のようなエラーが発生して再生に失敗することがあります。
[CRIWARE] Error:E2022040400:CodecException is occurred: android.media.MediaCodec.error_neg_5001
[CRIWARE] Error:E20220419617:CodecException is occurred: android.media.MediaCodec.error_neg_5001
[CRIWARE] Error:E2021062501:MediaCodec failed to configure. This device may not support movie resolution:1920 x 1080...
[CRIWARE] Error:E09031001M: Decoder core error.
[CRIWARE] Error:E2022060801:CodecException is occurred: android.media.MediaCodec.error_neg_5001
[CRIWARE] Error:E2022062829:CodecException is occurred: android.media.MediaCodec.error_neg_5001
[CRIWARE] Error:E2022060802:MediaCodec failed to configure. This device may not support movie resolution:1920 x 1080...
[CRIWARE] Error:E09031001M: Decoder core error.
このエラーは以下のケース(A)~(E)のいずれかの理由により発生します。
エラーE20220419617やE2022062829が発生するケース
エラー発生ケース 原因 説明
(A) 単発解像度上限 1本H.264ムービーを再生した際、解像度/fpsがその端末/OSでサポートしている解像度/fpsの範囲外だった
(B) 非サポート出力形式 その端末/OSでデコード出力形式が限られており、H.264ムービーのデコード処理自体に失敗した
(C) 再生本数上限 複数本H.264ムービーを再生した際(*1)、再生本数がその端末/OSでサポートしている最大同時再生本数を超えた
(D) 解像度面積上限 複数本H.264ムービーを再生した際(*1)、H.264ムービーの解像度から計算した総面積がその端末/OSでサポートしている総面積を超えた
(E) 不明 (A)~(D)以外の原因で、その端末/OS上でのH.264再生に失敗した
上記エラーが発生した際は(A)~(E)のどれに該当しているかを確認し、それぞれのケースに応じて対処方針を定めてください。
特に (D): 解像度面積上限 には該当しやすいためご注意ください。
注釈
(*1): 以下のような状況のことを指します。
  • 複数本のManaプレーヤーでH.264ムービーを同時に再生した
  • H.264ムービーを再生中または再生し終えたManaプレーヤーが破棄されず何本か残っている状態で、新たに別のManaプレーヤーでH.264ムービーを再生した

各ケースの確認方法

エラー E20220419617 や E2022062829 が(A)~(E)のどのケースに該当するかは、H.264面積上限チェッカー を利用することで確認できます。
H.264面積上限チェッカー が画面上やログ上、ローカルストレージ上のyamlファイル上に出力したチェック結果をもとに、以下の手順で確認を進めてください。
結果の読み方については チェック結果の確認 をご参照ください。
  1. エラー発生時に再生していたH.264ムービーの解像度の幅/高さが、面積上限チェッカーの出力結果にある max witdh / max height 超えていた または min width / min height 未満だった
    • →該当していた場合、 (A): 単発解像度上限 に該当します
    • →該当していない場合、2. へ
  2. 画面上に表示されている"Playable numbers of H.264 movies"がどの解像度でも0 / ログとyamlの出力結果では estimated lower area limit と estimated upper area limit の value が共に 0
    • →該当していた場合、 (B): 非サポート出力形式 に該当します
    • →該当していない場合、3.
  3. エラー発生時(1*)に該当するManaプレーヤーの数が画面/ログ/yamlの出力結果にある max decoder handle を超えていた
    • →該当していた場合、 (C): 再生本数上限 に該当します
    • →該当していない場合、4. へ
  4. エラー発生時(1*)に該当するH.264ムービーの総面積が、面積上限チェッカーが測定した面積上限値(*2)を超えていた
    • →該当していた場合、 (D): 解像度面積上限 に該当します
    • →該当していない場合、 (E): 不明 に該当します。
注釈
(*2): 面積上限の推定に成功した場合に出力される、以下の値を指します。
  • 画面上
    • "display detail"をONにした場合に画面上表示される "H.264 AREA LIMIT is between XXX and YYY."の XXX ~ YYY の範囲内の値
  • ログ/yaml上
    • estimated lower area limit の value - estimated upper area limit の value 範囲内の値
(*3): 現在のAndroid版Sofdecではライブラリ全体で複数本H.264ムービーを再生する際の上限値を最大16本までに制限しています。

E20220419617やE2022062829が発生した際の対処方針

エラー発生ケース(A)~(E)については以下の(1)~(6)のいずれかの対処方針が考えられます。
想定しうる対処方針
対処方針 概略 内容
(1) 単発解像度下げ 再生するH.264ムービーをその端末/OSでサポートしている解像度/fps(*2)の範囲内にしてエンコードし直す
(2) 再生タイミング調整 再生済みのManaプレーヤーは直ぐに破棄し、H.264ムービーを再生済みのManaプレーヤーとH.264ムービーを再生中のManaプレーヤーが同時に存在するタイミングを無くす
(3) 同時再生本数下げ (*1)に該当するH.264ムービーの複数同時再生本数を下げる
(4) 解像度総面積下げ (*1)に該当するH.264ムービーの複数再生時の総面積を、(1)/(2)/(3)を併用して下げる
(5) コーデック変更 アプリケーション内で再生するH.264ムービーのうち一部、または全てをVP9やSofdec.Primeでエンコードしたデータに置き換える(*4)
(6) 非対応端末扱い エラーが発生した端末/OSをそのアプリケーションの非対応端末とする
(7) サポート窓口相談 弊社テクニカルサポートよりエラー内容についてお問い合わせ/ご相談
エラー発生ケース(A)~(E)それぞれについて想定される対処方針(1)~(6)との対応は以下の表をご参考にしてください。
エラー発生ケース(A)~(E)/想定しうる対処方針(1)~(6)の対応表
(A) 単発解像度上限 (B) 非サポート出力形式 (C) 再生本数上限 (D) 解像度面積上限 (E) 不明
(1) 解像度下げ × × ×
(2) 再生タイミング調整 × × × ×
(3) 同時再生本数下げ × × ×
(4) 解像度総面積下げ × × ×
(5) コーデック変更
(6) 非対応端末扱い
(7) サポート窓口相談 × △(*5) ×
注釈
(*4): Primeにした場合はデータサイズが、VP9にした場合はCPU負荷が高くなります。
(*5): 弊社テクニカルサポートによる、以下のような特別対応のことを指します。
  • アプリケーション動作環境上で出力可能なH.264デコード形式が存在しているか調査し、存在していた場合はその端末/OS向け専用のライブラリの作成とご提供を検討いたします。
  • 端末のメーカー様/Google社へお問い合わせを行い、OSの更新などによる解決の道を摸索することも可能です。ただし端末のメーカー様/Google社からご協力をいただく場合は対応に時間がかかりやすく、必ずしも解決に至るわけではないことをご了承ください。