12

アプリケーションで AVPlayer を使用して、サーバーからオーディオを再生しています。オーディオを完全にバッファリングしたら、そのデータをアプリケーションに保存して後で再生できるようにしたいと考えています。では、バッファ データにアクセスし、後で使用するために保存するにはどうすればよいでしょうか。

4

4 に答える 4

40

resourceLoaderリソース読み込みプロセスの制御を引き継ぐデリゲートを提供AVPlayerし、データが要求されて利用可能になったときにデータを提供することができます。リソース ローダーは のプロパティAVURLAssetです。私のブログで完全なソリューションを文書化しましたが、主なアイデアは、URL のプロトコルをカスタムのものに切り替えて、AVURLAsset のリソース ローダーがその URL をロードする際にアプリケーションの支援を必要とすることです。次に、AVAssetResourceLoaderDelegateコールバックを取得したら、ファイルのダウンロードを開始し、データがあるときに、これらのデリゲート コールバックから受信した保留中の要求に応答しようとします。これにより、アプリで本格的な HTTP サーバーを実行したり、他の複雑なソリューションに頼ったりすることなく、コンテンツのプログレッシブ ロード/再生が可能になります。

于 2014-05-20T08:46:13.990 に答える
1

Calm のチームは、これに対する実装をオープンソース化しました。CocoaPod として利用できます。と呼ばれていPersistentStreamPlayerます。

これは、resourceLoader として機能します。他の実装に対する大きな利点は、バイナリ データがどの時点でもメモリ内にある必要がないため、より大きなファイルをサポートすることです。

機能は次のとおりです。

  • オーディオ ファイルのストリーミング、最初のデータが利用可能になるとすぐに再生を開始
  • また、バッファが完了するとすぐにストリーミング データをファイル URL に保存します
  • バッファ ストリームが停止した後、オーディオ ファイルの再起動を処理します (ネットワークが遅いなど)。
  • シンプルな play、pause、destroy メソッド (destroy はすべてのメモリ リソースをクリアします)
  • RAM に収まらない大きなファイルをサポートするため、オーディオ ファイル データをメモリに保持しません。

ここで見つけることができます: https://github.com/calmcom/PersistentStreamPlayer

于 2016-10-07T22:00:12.120 に答える
0

のバッファにアクセスできませんAVPlayer。いくつかのヒント: オーディオ ファイルのプレビュー (オーディオの短いバージョン) をサーバーに配置して、ユーザーが完全なオーディオ ファイルをダウンロードする前にプレビューを聞くことができるようにするか、カスタムのオープン ソース オーディオ ストリーム プレーヤーを検索することができます。これにより、ストリーム バッファにアクセスできるようになります。幸運を!

于 2013-08-20T06:59:14.580 に答える