- 本項では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): 解像度面積上限 には該当しやすいためご注意ください。
各ケースの確認方法
- エラー E20220419617 や E2022062829 が(A)~(E)のどのケースに該当するかは、H.264面積上限チェッカー を利用することで確認できます。
H.264面積上限チェッカー が画面上やログ上、ローカルストレージ上のyamlファイル上に出力したチェック結果をもとに、以下の手順で確認を進めてください。
結果の読み方については チェック結果の確認 をご参照ください。
- エラー発生時に再生していたH.264ムービーの解像度の幅/高さが、面積上限チェッカーの出力結果にある max witdh / max height 超えていた または min width / min height 未満だった
- →該当していた場合、 (A): 単発解像度上限 に該当します
- →該当していない場合、2. へ
- 画面上に表示されている"Playable numbers of H.264 movies"がどの解像度でも0 / ログとyamlの出力結果では estimated lower area limit と estimated upper area limit の value が共に 0
- →該当していた場合、 (B): 非サポート出力形式 に該当します
- →該当していない場合、3.
- エラー発生時(1*)に該当するManaプレーヤーの数が画面/ログ/yamlの出力結果にある max decoder handle を超えていた
- →該当していた場合、 (C): 再生本数上限 に該当します
- →該当していない場合、4. へ
- エラー発生時(1*)に該当するH.264ムービーの総面積が、面積上限チェッカーが測定した面積上限値(*2)を超えていた
- →該当していた場合、 (D): 解像度面積上限 に該当します
- →該当していない場合、 (E): 不明 に該当します。
- (*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) | × | ○ | ○ |
- (*5): 弊社テクニカルサポートによる、以下のような特別対応のことを指します。
- アプリケーション動作環境上で出力可能なH.264デコード形式が存在しているか調査し、存在していた場合はその端末/OS向け専用のライブラリの作成とご提供を検討いたします。
- 端末のメーカー様/Google社へお問い合わせを行い、OSの更新などによる解決の道を摸索することも可能です。ただし端末のメーカー様/Google社からご協力をいただく場合は対応に時間がかかりやすく、必ずしも解決に至るわけではないことをご了承ください。