AVPlayerにおけるエラーハンドリング
特に生放送で有用なケースが多い
エラー状態が回復するまで、他の bitrate のプレイリストにシームレスにスイッチさせることで視聴を継続させられる
https://gyazo.com/fb7c7919a19910fc9ebe29b5cc55c9cf
https://gyazo.com/2551a80133921c94b15911ca461d4262
エラーの種類
AVPlayer で発生するエラーの種別としては、主に以下のようなものが考えられる。 table:Error
Network Error 4xx, 5xx. TCP/IP, DNS エラー
Format Error Playlist, key, session データのフォーマットエラー
Live playlist update error 生放送にて、HLS 仕様に定められた playlist の更新に失敗した場合 table:avfoundation_error
AVErrorContentUnavailable コンテンツが再生できなかった。認証や認可に失敗してそもそも再生できなかったケース
AVErrorNoLongerPlayable 再生できていたが、その後発生したエラーにより再生不可になったケース
AVErrorFailedToParse データのパースに失敗したケース
これらの対応関係は、以下のようになる。
table: avfoundation
Network Error AVErrorContentUnavailable, AVErrorNoLongerPlayable
Timeouts AVErrorContentUnavailable, AVErrorNoLongerPlayable
Format errors AVErrorFailedToParse
Live playlist update error AVErrorContentNotUpdated
500, 502, 503, 504, 401, 403, 404 等の一時的なエラーの場合、variant stream が複数あれば、利用可能なものにスイッチする。なければ、リトライを行う session data error は無視される
エラーの検知に関する API
AVPlayer は、可能な限り再生を継続する、Failed に陥るのは再生が不可能になった場合のみ エラーの原因となったエラーが userInfo に格納されている
複数のエラーがネストしている場合もある
参考