ipod-library と assets-library の音楽ファイルに対して、多かれ少なかれ lstat (ファイルサイズと拡張子を取得するため) と fseek の類似機能を実装しようとしています。次に、これらのファイルをプレーヤーにストリーミングしています (このデバイス上にある場合とそうでない場合があります)。
私は 3 つのアプローチを考え出しましたが、どちらも特に満足できるものではありません。
1) lstat を模倣してファイルのサイズを伝えるには、AVAssetReader を使用してファイルの追加のチャンクを読み取り、完了するまでこれらのチャンクの長さを変数に追加します。ループの最後で、変数にはファイルの長さが含まれます。
「fseek」するには、AVAssetReader を使用して、ファイルの先頭から開始し、目的のポイントに到達するまで読み取ります。次に、残っている可能性のあるファイルのビットをキャッシュし、fread が発生したときに備えて保存します。
2) AVAssetExportSession を使用して、指定されたファイルを Documents ディレクトリにコピーすると、そのファイルに対して必要なことは何でも実行できます (実際の lstat、fseek など)。欠点は、ファイルのサイズに応じて 5 ~ 20 秒の一時停止です。
そのため、アプリに多くの余分な作業 (#1) を実行させるか、ユーザーに各曲の間に 5 ~ 20 秒待つように強制しているようです。ただ無駄に思えます。
3)ALAssetを使用すると、表現のサイズを取得できます...(ただし、オーディオファイルでは機能しません)。確かにfseekには対応していません。
現在#2を使用しています。それは確かに遅く感じますが、それでも、ファッションの後でうまくいきます.
他の誰かが私にもっと良いアプローチを教えてもらえますか?
ありがとう、
-ケン