現在、再生可能なすべての動画が埋め込まれたアプリが付属しています。これはうまくスケーリングできず、すべてのムービーを再生したい場合を除いて、ディスクスペースを浪費します。また、すべての映画を再ダウンロードする必要があるため、アプリをアップグレードすることはあまり望ましくありません。
私がやりたいのは、その場で映画をダウンロードし、ダウンロードしながら再生し、ダウンロードに成功したら、ファイルシステムに保存して、次に視聴したいときにローカルファイルからストリーミングできるようにすることです。
ビデオに必要なことは何でもできますが、現在、Amazon S3から.mp4ファイルとして提供しており、mimetypeはvideo / mp4であるため、問題の前半は正常に機能します。映画のダウンロード、 MPMovieViewControllerは、「十分」にダウンロードされたと判断するとすぐに再生を開始します。
そのビデオファイルのキャッシュを利用して、それを保存し、ファイルシステムに存在する期間を制御できるようにする方法はありますか?これが最も簡単なアプローチのようです。
私はiOS5+ 6をターゲットにしていますが、利用可能な唯一のソリューションがiOS 6を必要とする場合は、それも検討します。ありがとう!
更新: AFNetworkingを使用して、私は今、途中にいると思います。サーバーからビデオファイルをダウンロードして、ダウンロードの進行状況をリッスンしています。ビデオの25%がダウンロードされたことを確認したら、MPMoviePlayerControllerを使用してローカルファイルの再生を開始します。
私が今直面している主な問題は、再生が台無しになっているようだということです。順調に進んでおり、25%がダウンロードされ、再生が開始されます...ダウンロードは正常に続行されます...その後、ファイルのダウンロードが完全に終了し、その後すぐにビデオがフリーズします。画面上の再生タイマーはまだ再生が進行中であることを示しており、「再生終了」タイプの通知は表示されませんが、ビデオはフリーズしています。動作に基づく私の推測では、おそらくビデオ再生用の初期バッファーが使い果たされており、現在ディスク上でより多くのビデオが利用可能であることを検出していませんか?
MPMoviePlayerControllerと対話して、再生中のバッファーを更新するように定期的に通知する方法はありますか?または、この状況を処理する他の方法はありますか?