サウンドデコードバッファの調整

CRI Atomライブラリでデフォルト設定のままだとAndroidの一部端末でノイズ(音途切れ)、 また、音声が全く鳴らないといった症状が発生することがあります。

上記症状については以下のサウンドデコードバッファの調整で改善する可能性があります。

対処方法:サウンドデコードバッファの調整

一部端末ではデフォルトのサウンドデコードバッファ量だと不十分なため、ノイズ、 音声が鳴らなくなる症状につながります。

対策として以下の CriWareInitializer コンポーネントの設定で症状が解消するまで サウンドデコードバッファ量を増やして調整を行ってください。

次の図は Unity Editor の Inspector から見た CriWareInitializer です。

adx2u_initializer_bufferingtime.png

赤四角で囲んだ部分は、上から

に対応しています。デフォルトでは以下の値を指定してます。

(a)でサウンドデコードバッファサイズ自体を調整し、 (b)でそのうちのどれぐらいサウンドデータが溜まったら再生を開始するかをミリ秒単位で指定します。

どれぐらい増やせばよいかは、機種やアプリケーションの負荷状況に依存するため、 問題ない数値を各機種ごとに調整し、判断する必要があります。

調整の方法としては、ノイズが発生しなくなる、音声が正常に鳴るまで(a)も(b)も 同じ数値で増やしていきます。

次にAndroid低遅延音声再生 を使用している場合は (b)の数値分だけ再生開始遅延になってしまいますので、 音途切れしない程度に(b)の数値のみ減らしてください。

設定例

CRIでは以下の端末でノイズ(音途切れ)の発生を確認しています。

例えばCRI SDKではF-05Dについては下記のような設定でノイズが発生せずに再生できることを確認しています。

また、以下の端末では音声が鳴らなくなる症状を確認しています。

AT200については下記のような設定でADX2音声が再生されるように なることを確認しています。

基本的にはデフォルト値のまま運用を行い、音途切れ、音が鳴らないといった症状が 発生する特定の端末についてのみアプリケーション側で端末判定を行い、 バッファ時間調整をするようにしてください。

補足

 ■ コード上の端末判別について

コード上の端末判別については例えば「ARROWS X LTE F-05D」の場合、 android.os.BuildのクラスにあるMODELが「F-05D」かを確認可能です。 以下にUnity上で確認したサンプルコードコード例を示します。
    {
        AndroidJavaClass clsUnity;
        string MODEL_ID;

        clsUnity = new AndroidJavaClass("android.os.Build");

        MODEL_ID = clsUnity.GetStatic<string>("MODEL");

        /* Android端末名との文字列比較(F-05D); */
        int ret = MODEL_ID.CompareTo("F-05D");
        if (ret == 0) {
            /* F-05D用の設定 */
            initializer.atomConfig.androidBufferingTime = 200;
            initializer.atomConfig.androidStartBufferingTime = 150;
        }
    }

 ■ 再生開始レイテンシ削減について

本項ではサウンドデコードバッファ量を増やした調整、ノイズ改善について触れていますが、 逆にノイズが発生しない範囲で設定値をデフォルトから減らし、 調整することで再生開始レイテンシを削減できる可能性があります。 その場合は実機端末上で必ず動作検証を十分行うようにして下さい。

CRI Middleware logo Copyright (c) 2012-2018 CRI Middleware Co., Ltd. CRI ADX2 LE マニュアル (for Unity) SDKVer.2.10版