Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
981 views
in Technique[技术] by (71.8m points)

ios - AVPlayer fails to play video sometimes

AVPlayer failed to play video

I'm having grid of videos, AVPlayer sometimes fail to play video and showing this disabled icon with following error,

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})

but same video getting played later on, so it is random issue. Any help on what's going wrong?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Search Error

I believe there are a lot of people, like me, are looking for the solution of this problem.

I spent a whole afternoon's time, finally solved the problem.

On the question, an error occurred when the video starts playing.

such as:

Domain=AVFoundationErrorDomain Code=-11850 "Operation Stopped"

then I search this error number, and find it:

AVErrorServerIncorrectlyConfigured = -11850

In Apple's Document, I find some information about this error.

The HTTP server sending the media resource is not configured as expected. This might mean that the server does not support byte range requests.

Find Error

So, we should understand that this is a server problem.

Now, we play a video, and grab all http request for analysis.

Will find that AVPlayerItem sends an HTTP request.

when AVPlayerItem receive a video URL , it do the following task:

  1. Send a bytes request HTTP Request, and range = 0 -1
  2. If the response code is 206 and return 1 bytes data, It do the 3th task, if not, AVErrorServerIncorrectlyConfigured error occurred.
  3. continue send other HTTP Request, to download segment of All duration. and the response of VideoData code must be 206

In my situation , when send range[0-1] HTTP request, the server side give me a 200 OK response, So error occurred.

Result

So, you need to ask your server engineer to detect all response who return.

I wish it could help you.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...