I'm working on an app that allows users to play videos from YouTube inside a UIWebView. The videos play fine on the device, but I'm having issues when attempting to AirPlay CERTAIN videos from my UIWebView. Basically, there are some videos that will consistently fail to AirPlay - and I get an error message on my AppleTV - "An error occurred loading this content. Try again later" ... The device logs reveal this error:
_itemFailedToPlayToEnd: {
AVPlayerItemFailedToPlayToEndTimeErrorKey = "Error Domain=AVFoundationErrorDomain Code=-11800 \"The operation could not be completed\" UserInfo=0x170a7a9c0 {NSUnderlyingError=0x17064b1c0 \"The operation couldn\U2019t be completed. (OSStatus error -12926.)\", NSLocalizedFailureReason=An unknown error occurred (-12926), NSLocalizedDescription=The operation could not be completed}";
The console logs on my device show this when attempting to make an AirPlay connection:
Connected to address: 10.1.5.30:5000
Connected to endpoint: "Apple TV" at 10.1.5.30:5000 (from 10.1.7.233:58375)
Audio pair-verify: 10.1.5.30:5000
### Pair-verify failed: -6743/0xFFFFE5A9 kSizeErr
### Audio pair-verify failed: -6743/0xFFFFE5A9 kSizeErr
Re-pair-setup with "Apple TV"
Audio pair-Setup: 10.1.5.30:5000
### Pair-setup failed: -6743/0xFFFFE5A9 kSizeErr
### Audio pair-setup failed: -6743/0xFFFFE5A9 kSizeErr
Disconnected from 10.1.5.30:5000
Here are some example YouTube videos that will NOT AirPlay from a UIWebView with iframe embed (my apologies for the content):
http://www.youtube.com/watch?v=KQ6zr6kCPj8
http://www.youtube.com/watch?v=CevxZvSJLk8
I'm looking for any help or ideas for a workaround. Thanks!
EDIT: I would like to also say that I can AirPlay these "problem" videos with success to third-party AirPlay implementations such as AirServer.
Related
While Implementing Offline FPS Getting AVFoundation Error -11800
I am implementing the Offline HLS using FPS.
I have downloaded the video using AVAssetDownloadDelegate
Now For DRM content I need to fetch license so I have implemented the AVAssetResourceLoaderDelegate
Everything is working fine in AVAssetResourceLoaderDelegate, I got the CKC or License but when I execute following code
let persistentContentKeyContext = try loadingRequest.persistentContentKey(fromKeyVendorResponse: responseData, options: nil)
I get following error
Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo={NSLocalizedFailureReason=An unknown error occurred (-12158), NSLocalizedDescription=The operation could not be completed, NSUnderlyingError=0x1c084a6e0 {Error Domain=NSOSStatusErrorDomain Code=-12158 "(null)"}}
Can anyone please tell me what does this error codes means and how to resolve this error.
Unfortunately, the error response you are seeing is not very informative as you have noticed and could cover multiple failure cases.
It is typically means that the device FairPlay service cannot properly decode the CKC that your DRM server provided to the device, or else that some of the information in it is not consistent with a persistent license.
This is a problem for you to debug as the CKC that is sent back is encrypted in a way that you will not be able to read - see diagram below from Apple showing the sequence:
The best way to debug and investigate this is usually to contact the provider of your DRM server (key server in the above diagram) and see if they can investigate it on the server side and decode the response they are sending to you so you can check it matches what you are expecting and the persistent period etc is correct.
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 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 have used CocoaHTTPServer server to stream media files. App is playing media with httpURL with MPMusicPlayerController Player controller.
My implementation works fine on older iOS version but fails on iOS7 gets error
{
MPMoviePlayerPlaybackDidFinishReasonUserInfoKey = 1;
error = "Error Domain=MediaPlayerErrorDomain Code=-1005
\"The network connection was lost.\" UserInfo=0xa5427b0
{NSLocalizedDescription=The network connection was lost.}";
}
I tested to open url in browser I could download file.That means server is running.
Any idea,suggestion what is going wrong?