Post not yet marked as solved
Our app is receiving more of these 2 errors recently. But there is 0 documentation or search result about these 2 errors. Anyone know what they mean?
CoreMediaErrorDomain: -16934
CoreMediaErrorDomain: 28
Post not yet marked as solved
Hi,
We are trying to adopt FPS for mp4 content protection playing on safari browser of Mac OS.
I have verified that native functions of safari browser support the decryption for AES-128 encrypted TSs based on EME of HTML5 and HLS mechanism, where the CEK stores in http server described in the m3u8 manifest and is delivered to the browser in plain.
Although it is a simple and easy solution to protect the mp4 contents, the security is still matter because the key is delivered in plain.
So we decided to implment a key server to issue the CKC message after receiving SPC as safari browser's key request.
I have a question before starting it.
Q: The Encrypted AES-128 key in the Table 2-3. SPC container structure of FairPlay Streaming Programming Guide document says that "This key is itself encrypted, using RSA public key encryption with Optimal Asymmetric Encryption Padding (OAEP)".
It means we needs a private key to decrypt it. I understand it if the client is a proprietary application so that the public key would be one of the FPS development credential, which will be issued by Apple according to our request. Because the client application can use the public key during the implementation.
But what if the client is the safari browser? We cannot use any kind of new issued public key for the safari browser.
I guess Mac OS uses some fixed public key which is already issued by Apple for safari browser's FPS.
Now how can I get the counter private key?
It could not be contained in the FPS credential. Because it should be a fixed one, not new generated one.
Post not yet marked as solved
Hello
I have a HLS manifest with multiple audio and multiple subtitle tracks. I use AVPlayer on iOS to play this HLS asset.
On the iOS app I have the freedom to display selective subtitle and audio track list to the user but when the user uses AirPlay on the iOS, all the subtitle and audio tracks available in the HLS manifest is displayed to the user on the Apple TV (or any AirPlay compatible device).
Let me explain with one example.
Say, the HLS manifest has the following tracks:
English, Spanish & German audio tracks
English, Italian, Spanish & German subtitle tracks
When the user uses AirPlay, I want to hide German language and display only the following tracks on the Apple TV:
English & Spanish audio tracks
English, Italian & Spanish subtitle tracks
The primary intent here is that the user should not be able to see German language anywhere on the target AirPlay device.
How to achieve this in code?
Note: It's difficult to modify the source HLS manifest file.
Post not yet marked as solved
I have an iOS app that can play audio books as FairPlay DRM'd audio streams. I'm using AVContentKeySession to fetch keys and AVQueuePlayer to play. It works great on iOS, but on Catalyst (Monterey 12.3.1, M1 Max MacBook Pro) it crashes. When it happens in debug, I get a message "Too few bits left in input buffer" printed to the console, and an exception is thrown in the guts of what appears to be core media. Here's the output from [NSThread callStackSymbols] when paused on an exception breakpoint at that point:
0 ??? 0x0000000156b8cc9c 0x0 + 5749918876,
1 BRFree 0x000000010445cf08 main + 0,
2 AudioCodecs 0x0000000157918c24 _ZL11GetPropertyPvjPjS_ + 52,
3 AudioToolboxCore 0x00000001862536a4 _ZN15ADTSAudioStream11ParseHeaderER27AudioFileStreamContinuation + 1060,
4 AudioToolboxCore 0x000000018624259c AudioFileStreamParseBytes + 412,
5 MediaToolbox 0x00000001915f7d98 FigManifoldCreateForICY + 2176,
6 MediaToolbox 0x00000001915f7718 FigManifoldCreateForICY + 512,
7 MediaToolbox 0x00000001916bbd78 FigPlayerStreamCreate + 315920,
8 MediaToolbox 0x0000000191a269a0 FigMetadataConverterCreateForQuickTimeToFromiTunes + 45888,
9 MediaToolbox 0x0000000191a4a290 FigMetadataConverterCreateForQuickTimeToFromiTunes + 191536,
10 MediaToolbox 0x0000000191a2a470 FigMetadataConverterCreateForQuickTimeToFromiTunes + 60944,
11 MediaToolbox 0x0000000191a28c34 FigMetadataConverterCreateForQuickTimeToFromiTunes + 54740,
12 MediaToolbox 0x0000000191a413b4 FigMetadataConverterCreateForQuickTimeToFromiTunes + 154964,
13 MediaToolbox 0x0000000191a2f144 FigMetadataConverterCreateForQuickTimeToFromiTunes + 80612,
14 MediaToolbox 0x00000001917cae64 FigAlternateFilterMonitorCreateForThermalNotification + 30428,
15 MediaToolbox 0x00000001917ccb44 FigAlternateFilterMonitorCreateForThermalNotification + 37820,
16 MediaToolbox 0x00000001917cb134 FigAlternateFilterMonitorCreateForThermalNotification + 31148,
17 CFNetwork 0x0000000189937cd4 _CFHostIsDomainTopLevelForCertificatePolicy + 27728,
18 Foundation 0x0000000185ba980c __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 24,
19 Foundation 0x0000000185ba96b4 -[NSBlockOperation main] + 104,
20 Foundation 0x0000000185ba9644 __NSOPERATION_IS_INVOKING_MAIN__ + 24,
21 Foundation 0x0000000185ba88dc -[NSOperation start] + 788,
22 Foundation 0x0000000185ba85c0 __NSOPERATIONQUEUE_IS_STARTING_AN_OPERATION__ + 24,
23 Foundation 0x0000000185ba8478 __NSOQSchedule_f + 184,
24 libdispatch.dylib 0x00000001099f60f4 _dispatch_block_async_invoke2 + 148,
25 libdispatch.dylib 0x00000001099e2394 _dispatch_client_callout + 20,
26 libdispatch.dylib 0x00000001099eb778 _dispatch_lane_serial_drain + 980,
27 libdispatch.dylib 0x00000001099ec814 _dispatch_lane_invoke + 492,
28 libdispatch.dylib 0x00000001099f9fc8 _dispatch_root_queue_drain + 408,
29 libdispatch.dylib 0x00000001099f9d3c _dispatch_worker_thread + 264,
30 libsystem_pthread.dylib 0x00000001094e1890 _pthread_start + 148,
31 libsystem_pthread.dylib 0x00000001094ebaa8 thread_start + 8
In the Debug Navigator, the top of the stack looks a little different:
#0 0x0000000184bdeb3c in __cxa_throw ()
#1 0x000000015791941c in ACMP4AACLowComplexityDecoder::GetProperty(unsigned int, unsigned int&, void*) ()
#2 0x0000000157918c24 in GetProperty(void*, unsigned int, unsigned int*, void*) ()
#3 0x00000001862536a4 in ADTSAudioStream::ParseHeader(AudioFileStreamContinuation&) ()
#4 0x000000018624259c in AudioFileStreamParseBytes ()
#5 0x00000001915f7d98 in ___lldb_unnamed_symbol598$$MediaToolbox ()
What's going wrong here? Can anyone give me direction on what to fix? Or is FairPlay audio not even expected to work in Catalyst at this point?
Post not yet marked as solved
When I tested it, mp4 container subtitles cannot be played (VTT can be played).
mp4 subtitles AVFoundation doesn't support mp4 subtitles?
Post not yet marked as solved
Website serving Apple FairPlay videos here...
I have three users reporting problems with playback using Safari on iPad with iOS 15.4.
It seems they can no longer use Chrome (where we serve the same videos using DASH+CENC) either.
That is all I know at this time.
Not finding anything from google except the 15.1 FairPlay debacle...
Just fishing.
Anything similar for anyone else?
Thank you kindly.
Post not yet marked as solved
Hello everyone, I have downloaded the SDK 4.4.1 from Apple and I'm trying to implement fairplay streaming with encrypted videos.
I have arrived the a section whereby it is asking to test Key Security Modules.
I cannot get hold of any pkeyPem variable with a value and also cannot find the spc_internal_values_v2.txt file.
Can anyone help me out?
Thank you very much!
Post not yet marked as solved
Hi,
I have a video streaming application and a part of code which use FairPlay + DRM. Im trying stream DRN content on appletv and It works well on iOS 13, but on iOS 15 i see nothing and catch internal player error:
Error Domain=AVFoundationErrorDomain Code=-11870 "Operation failed" UserInfo={NSLocalizedFailureReason=An unknown error has occurred (808), NSLocalizedDescription=Operation failed, NSUnderlyingError=0x283902700 {Error Domain=NSOSStatusErrorDomain Code=808 "(null)"}}
Post not yet marked as solved
I've been searching all over to find an answer to this question. I know that FairPlay/HLS supports audio Streams since there's obviously audio in video, but I'm wondering if this is practical? Also is there any way to stream FairPlay DRM encrypted content without HLS? or if I use HLS could I create only a single audio bitrate format in order to save on hosting costs? I work on and Audio Book app that requires DRM for some content.
Also any links to documentation, videos, tutorials, blog posts... etc on the topic would be awesome too.
Very much appreciate anyone who takes the time to answer this. I wish this was more explicitly talked about on the Apple Dev site, but it seems very geared towards video streaming.
Post not yet marked as solved
Trying to play some non DRM video from HLS url but AVPlayer is not playing the video, Exactly getting this error :- "Player Item Error: Optional("The operation couldn’t be completed. (CoreMediaErrorDomain error -12971.)")" . No idea what is happening here and also what does error -12971 means exactly?
Post not yet marked as solved
When recording 4K 60fps on iPhone 11 Pro, 12 and 13 it does not provide a stable frame rate of 60fps. Checking the Meta data it ranges from 52-58. Are there any settings that can force 60 frames or anything I can do to get a stable frame rate of 60fps.
it also appears when trimming the video the frame rate drops as well.
I've been maintaining adaptive HLS+FairPlay streams with audio and video for years. My implementation works great. However, I'm now also implementing captions or subtitles, and I'm having trouble with the later.
I'm actually able to generate my HLS streams with WebVTT subtitles, and they work great. But as soon as I encrypt the streams, Apple players stop working (forever stall). And my fairplay implementation works perfectly when no subtitles are involved.
I'm not encrypting the webvtt chunks: they travel as plain text, as stated in Apple guidelines. I believe this may be the issue: encrypted a/v streams with an unencrypted subtitles stream. However, encrypting plain text subtitles with SAMPLE-AES has no sense to me, so far I was unable to find a single HLS example online with subtitles that also happen to have FairPlay encryption. All documents I have about FairPlay also say nothing about this,
I've also tried applying CEA-608 closed captions in the video stream, and this actually works great with FairPlay. But CEA-608 has its own issues, and so I would like to migrate that tech to WebVTT: which also works great, except when FairPlay is involved.
I understand that Apple also establishes that I could use TTML (ISMC1) inside fMP4, which I suspect may be SAMPLE-AES encryptable. However, given my customers use cases, I need to use TS format for HLS, and so I can't use fMP4.
With all this in mind, do anybody know how to properly configure HLS+FairPlay with a plain text WebVTT subtitles stream?
Please note this is about live streaming, and not VOD nor offline playback.
Thanks.
Post not yet marked as solved
I recently successfully registered for the FPS certificate but I lost the ASK. How can I find it? Or I need to revoke the certificate.
Post not yet marked as solved
Hi,
we have a customer having problem with our TV Live application with its iPhone 13 iOS 15. The player raises a CoreMediaErrorDomain error -42765 upon fairplay HLS stream.
Is it possible to get a description and potential cause of this probleme to help him.
Kind regards
Cédric
Post not yet marked as solved
I am running a spike for apple watches and one of the things that I'm evaluating now is the capability to play HLS + fairplay content offline. It seems like the only way forward is by using AVAssetDownloadTask, which is not available on watchOS. So, my question is if there is any plan to release this capability to apple watches soon or if there is any other way to do that.
Hi, IOS 15 Safari does not support Fairplay DRM and gives an error, other browsers like Chrome also do not work. Since IOS 15 released today, we as DRM providers are having a lot of complaints from our customers. The issue does not happen on IOS app, only for IOS browser. We have seen the same issue across multiple DRM providers, so issue is at the end of Apple and only occurs for IOS 15.
Post not yet marked as solved
Playbacking FPS content on iOS v15 Beta + Safari fails even if key request succeeds.
I've used Shaka player and other HTML5 players which ends in the same result.
Although, when trying it on AVPlayer, playback succeeds so I guess there is some problem in Safari or somewhere.
Is it a bug and will it be fixed before release?
By the way iOS v14 + Safari + FPS works with no problem.
Post not yet marked as solved
Trying to download an encrypted HLS stream we faced the following behaviour:
Setting requestCachePolicy and/or urlCache properties of URLSessionConfiguration that used to create the AVAssetDownloadURLSession seems to have no effect at all.
In our application the user can add multiple encrypted HLS streams at a queue. Before adding them in queue, we make sure that the manifest gets cached using the shared URLSession like this:
URLSession.shared.configuration.urlCache = .shared
let task = URLSession.shared.dataTask(with: media.url) { _, _, _ in
self.addMediaToQueue(media)
}
task.resume()
and we setup our AVAssetDownloadURLSession like this:
// Create the configuration for the AVAssetDownloadURLSession.
let backgroundConfiguration = URLSessionConfiguration.background(withIdentifier: "AAPL-Identifier")
backgroundConfiguration.urlCache = .shared
backgroundConfiguration.requestCachePolicy = .returnCacheDataElseLoad
// Create the AVAssetDownloadURLSession using the configuration.
assetDownloadURLSession = AVAssetDownloadURLSession(
configuration: backgroundConfiguration,
assetDownloadDelegate: self,
delegateQueue: .main
)
Here is an example of the caching headers that we use:
Last-Modified: Thu, 11 Mar 2021 02:23:57 GMT
Cache-Control: max-age=604800
This is important for us since our manifest url is signed and expires after 12 hours.
Example of manifest URL:
https://example.host.gr/v1/791/888/773923397316/773923397316.ism/.m3u8[…]~hmac=ee37a750b8238745b5c8cf153ebcd0b693dd5d83
If the client followed the HTTP cache policy and didn’t request the .m3u8 manifest file over the internet, the download would start, despite the 12 hours limit.
Is this the intended behaviour of the download process or some kind of an issue? Could you suggest a workaround?
Post not yet marked as solved
Hi
My team generated the CSR for FairPlay on Windows and when we got the certificate, installing it on the machine used to generate the CSR we get the following error :
A certificate issued by the certification authority cannot be installed. Contact your administrator.
A certificate chain could not be built to a trusted root authority. 0x800b010a (-2146762486 CERT_E_CHAINING)
We did this using the instructions on the FiraPlay Streaming Credential Generation Guide.
If we install the certificate by opening the certificate and clicking on the install option, we get this error on the certificate
"Windows does not have enough information to verify this certificate"
Desperately looking for a solution. Any help would be most appreciated.
Post not yet marked as solved
I am trying to encrypt a live stream with FairPlay and then play it in the player. I use this method:
public void onHTTPCupertinoEncryptionKeyLiveChunk(ILiveStreamPacketizer liveStreamPacketizer, String streamName, CupertinoEncInfo encInfo, long chunkId, int mode) {
if (streamName.startsWith("aes")) {
encInfo.setEncMethod(CupertinoEncInfo.METHOD_SAMPLE_AES);
encInfo.setEncKeyFormat("com.apple.streamingkeydelivery");
encInfo.setEncKeyBytes(BufferUtils.decodeHexString("123456789ABCDEF123456789ABCDEF12"));
encInfo.setEncIVBytes(BufferUtils.decodeHexString("FEDCBA9876543210FEDCBA9876543210"));
encInfo.setEncUrl("skd://skd");
encInfo.setEncKeyFormatVersion("1");
}
I use http://player.wmspanel.com/ and I get this license https://ls-proxy.redlabs.pl/license/fps/tvnTest/fps/tvnTest?key=123456789ABCDEF123456789ABCDEF12&iv=FEDCBA9876543210FEDCBA9876543210 and https://r.dcs.redcdn.pl/file/o2/portal/prod/fairplay/cert.pub
I just want to see if I get my live license it will be work. Where could there be a mistake? maybe you know some sample players and licenses to test the DRM?