오류코드
iOS에서 AVPlayer, AVURLAssets 을 이용하여 mp4 동영상을 재생하려다가 발생한 오류이다.
- byte range length mismatch
- NSOSStatusErrorDomain Code=-12939
Domain=AVFoundationErrorDomain Code=-11850 "Operation Stopped" UserInfo={NSUnderlyingError=0x7f927ede4210
{Error Domain=NSOSStatusErrorDomain Code=-12939 "(null)"}
, NSLocalizedFailureReason=The server is not correctly configured., NSLocalizedDescription=Operation Stopped})
원인 및 해결법
서버가 HTTP Range Request를 지원하지 않아서 발생하는 문제이다.
서버관리자에게 해당 기능 지원을 요청해야한다.
AVPlayerItem은 다음과 같은 방법으로 비디오 URL를 서버에서 수신하다.
1. 비디오파일의 1바이트를 서버에 요청한다.
2. 서버에서 보낸 응답 상태 코드가 206이면 3번째로 넘어간다. 200이 오면 에러가 발생한다. (200이면 Range Request를 지원안하는 것)
3. 비디오를 다운로드 받으며 나머지 HTTP 요청을 계속한다.
(참고: https://stackoverflow.com/questions/33823411/avplayer-fails-to-play-video-sometimes )
서버 HTTP Range Request 지원 여부 확인 법
https://withbundo.blogspot.com/2017/08/http-16-http-i-accept-range-etag.html