私は現在、SoundJSを利用するアプリケーションに取り組んでいます。iPad で正しく動作しないことがわかった後、コードベースを継承しました。問題は、約 16 個の MP3 ファイルのマニフェストが作成され、合計で約 35.7 MB になります。これは明らかに iPad の問題を引き起こし、16MB でクラッシュします。
クラッシュ ログは、診断および使用ログによると、プロセスごとの制限が原因であることを示しています。
SoundJS の基礎となる構造を掘り下げてみたところ、XHR を介して WebAudio を利用するのがデフォルトの動作であることがわかりました。これは、ArrayBuffer (または ArrayBuffers の配列) として解析されます。
現時点では、これはプリロード後に ArrayBuffers に 35.7MB のデータがあることを意味します。これは良くありません。これは、ファイルサイズを縮小した後です。一度に再生されるオーディオ ファイルは 1 つだけです。これは、アプリのセクションごとに 1 つのファイルです。2 つが互いにフェードインする可能性がある遷移中を除きます。
基礎となる構造からリソースを解放する簡単な方法はありますか? つまり、ArrayBuffers? 私の知る限り、以前の開発者は SoundJS.removeSound()
メソッドの呼び出しを使用してメモリを解放しようとしましたが、結果は良くありませんでした。
現時点では、すべてのファイル名のレジストリとして機能するオブジェクトを作成し、マニフェストを介してそれらをロードするのではなく、個別にロードして使用するとすぐに削除することを検討しています。ただし、これにより、再生中にあるファイルを別のファイルにイージングすることで頭痛の種になると予想しています。さらに、MobileSafari がイメージに割り当てられたメモリを解放しなかったというイメージの問題に似た問題が実際に発生する可能性があると思います-削除後でも。(正しい修正は、削除する前にイメージ要素の 'src' 属性をリセットすることです)
iPad を対象とする Web アプリでこのような大量のデータをロードするための確実な回避策を知っている人はいますか?