Error Domain=AVFoundationErrorDomain Code=-11855 "Cannot Decode" UserInfo={NSUnderlyingError=0x157372050 {Error Domain=NSOSStatusErrorDomain Code=560226676 "(null)"}, NSLocalizedFailureReason=The media data could not be decoded on this device., NSLocalizedDescription=Cannot Decode}
Getting the above error when trying to start writing with an AVAssetWriter. This only occurs on iphone 5s, and only occurs sometimes. The most reproducible case is when we move from a VC with an AVPlayer that is playing media straight to the VC that handles the recording. The same VC with the recorder works correctly with the same settings when not navigating from the VC with the AVPlayer. What might cause this error and where can I look to fix this?
The asset writer code is part of the SCRecorder pod:
https://github.com/rFlex/SCRecorder
https://github.com/rFlex/SCRecorder/blob/master/Library/Sources/SCRecordSession.m
We solved this after finding that the audio sample rate was being changed, causing this error. We recheck the audio sample rate prior to recording and correct it if it has for some reason been changed.
Related
I am using CTVideoView to playback videos inside a UITableView in iOS. As of late this was working fine, but for some reason, it seems as though the something has gone astray.
About 10% of the videos will play in the table, but many will simply just fail to play. The error occurs when iOS is trying to download the video as can be seen by the error messages below. For some reason, the error message is different in iOS 10 & 11 but the code is the same.
Based on iOS 10's message one would believe that the network is not available, but if I point my safari/chrome browser on the same iOS device it plays the video just fine.
As for the iOS 11 message, I have no idea where to even start as it the first time I've seen this message.
Any help at all would be much appreciated in resolving this.
iOS 10 Error Message
FAILED TO PREPARE VIDEO WITH ERROR: Error Domain=NSURLErrorDomain
Code=-1 "unknown error" UserInfo={NSLocalizedDescription=unknown
error,
NSErrorFailingURLStringKey=URLOBSCUREDFORPRIVACY,
NSErrorFailingURLKey=URLOBSCUREDFORPRIVACY,
NSURL=URLOBSCUREDFORPRIVACY,
NSUnderlyingError=0x17044bd00 {Error Domain=CoreMediaErrorDomain
Code=-12939 "CFNetwork error unavailable"
UserInfo={NSDescription=CFNetwork error unavailable,
NSURL=URLOBSCUREDFORPRIVACY}}}
iOS 11 Error Message
FAILED TO PREPARE VIDEO WITH ERROR: Error Domain=NSURLErrorDomain
Code=-1 "unknown error" UserInfo={NSUnderlyingError=0x1c08483d0 {Error
Domain=CoreMediaErrorDomain Code=-12939 "content range mismatch -
should be start 0 length 1247166 is start 0 length 1048575"
UserInfo={NSDescription=content range mismatch - should be start 0
length 1247166 is start 0 length 1048575,
NSURL=URLOBSCUREDFORPRIVACY}},
NSErrorFailingURLStringKey=URLOBSCUREDFORPRIVACY,
NSErrorFailingURLKey=URLOBSCUREDFORPRIVACY,
NSURL=URLOBSCUREDFORPRIVACY,
NSLocalizedDescription=unknown error}
Update (Possible Clue)
So after some testing I've narrowed it down to videos longer than or equal to 10 seconds. In all other circumstances the video will play.
I have resolved the issue. The issue was with ParseServer and the fact that it could not stream videos to iOS as it does not come out of the box with byte-range headers configured.
The solution was to implement the GridStoreAdapter into the server and from there migrate file storage to S3 or GCS (depending on your preference). This will need to be done alongside the respective adapter for your service.
Once that was done, the app started behaving correctly again.
I'm using AVPlayer to stream SoundCloud songs in my app, but some of them don't work, despite the streamable flag being true. An example of a song that doesn't work is "Black Friday" by Kendrick Lamar, with streaming URL
https://api.soundcloud.com/tracks/234989572/stream?client_id={MY_CLIENT_ID}
(with {MY_CLIENT_ID} being the actual ID, of course)
This is the error returned by the AVPlayerItem (again with the real client ID obscured):
Error Domain=NSURLErrorDomain Code=-1100 "The requested URL was not found on this server."
UserInfo=0x7fe735752340 {NSUnderlyingError=0x7fe735751e30 "The operation couldn’t be completed. (OSStatus error -12938.)",
NSErrorFailingURLStringKey=https://api.soundcloud.com/tracks/234989572/stream?client_id={MY_CLIENT_ID},
NSErrorFailingURLKey=https://api.soundcloud.com/tracks/234989572/stream?client_id={MY_CLIENT_ID},
NSURL=https://api.soundcloud.com/tracks/234989572/stream?client_id={MY_CLIENT_ID},
NSLocalizedDescription=The requested URL was not found on this server.}
Most songs play just fine, for example "Everything Will Be OK" by G-Eazy. URL:
https://api.soundcloud.com/tracks/236005149/stream?client_id={MY_CLIENT_ID}
Why are some songs, like Black Friday, failing?
The publisher of that track has opted not to provide an mp3 stream for it. Unfortunately, for some very complicated reasons, there's no way to tell that is going to be the case until you actually try to fetch the stream. It's a very frustrating thing, but please believe me when I say the reasons are complicated.
Perhaps sending a HEAD request to the streams endpoint before attempting to play would help?
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?
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:
Send a bytes request HTTP Request, and range = 0 -1
If the response code is 206 and return 1 bytes data, It do the 3th task, if not, AVErrorServerIncorrectlyConfigured error occurred.
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.
I am trying to play a movie file of .mp4 format using AVPlayer. In my code, I am creating AVPlayer every time whenever a movie play is requested. Everything works fine except if due AVPlayer fails to play a movie once then in every next play request it fails until application is launched again.
I key value observing AVPlayerItem's status property for detecting AVPlayer failure.
Has anyone come across similar kind of problem?
Thanks in Advance.
I get this error from AVPlayerItem's error property:
Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo=0x17946d540 {NSUnderlyingError=0x178642dc0 "The operation couldn’t be completed. (OSStatus error -12983.)", NSLocalizedFailureReason=An unknown error occurred (-12983), NSLocalizedDescription=The operation could not be completed}
I am not sure what the issue is but when i try to play MP4 videos hosted on akamai server, the MPMoviePlayerViewController fails to play it. I added notifications for monitoring playback state and it quickly switches from playing to stopped. If i print the error then i get the following:
MPMoviePlayerPlaybackDidFinishReasonUserInfoKey = 1;
error = "Error Domain=MediaPlayerErrorDomain Code=-11850 \"Operation Stopped\" UserInfo=0x1e5a6750 {NSLocalizedDescription=Operation Stopped}";
Above message is not very helpful in understanding what the actual issue might be. It is important to note that i am able to play the same URL in Safari and my app is able to play youtube videos without any issues.
The issue was pretty trivial - I was passing in an incorrect streaming URL :(. Thanks.