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
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
Hello!Well, I am trying to get the apple fairplay demo working for safari.My manifest#EXT-X-SESSION-KEY:METHOD=AES-128,URI="XXXXXXXXX"#EXT-X-STREAM-INF:BANDWIDTH=53000,CODECS="mp4a.40.5"hls-audio=49152.m3u8And I have a method waiting for the event webkitneedkey but it is not being called. video.addEventListener('webkitneedkey', onneedkey, false);Why? What is the problem?
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.
Post not yet marked as solved
Hi all~!I got an error code -66681 when AVPlayer starts playing, after I updated iOS version to 13.4.When I checked it on osstatus.com, it named 'kAudioQueueErr_CannotStart' from AudioToolBox.framwork.However I have no any clue what it means.Order versions have no issue. It works perfectly.FYI, I set signed cookies to AVURLAsset and it works with non-drm videos.let cookies = cookieInfo.map { HTTPCookie.cookies(withResponseHeaderFields: ["Set-Cookie": "\($0.key)=\($0.value)"], for: url) }.flatMap { $0 }
asset = AVURLAsset(url: url, options: [AVURLAssetHTTPCookiesKey : cookies])Issue occures with only drm videos.Could anybody give me some advice about this?
Post not yet marked as solved
Hi,
I am using AVPLayer for play HLS video(live, vod).
Is there any possibility to modify master manifest on the fly? The goal to remove some of variants from the playlist.
Example:
We have master manifest which contains several variants:
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=416x234,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/low/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=240000,RESOLUTION=416x234,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/lo_mid/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=416x234,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/hi_mid/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=640000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/high/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=64000,CODECS="mp4a.40.5"
http://example.com/audio/index.m3u8
And I want dynamically remove all variants except the last and have in the result:
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=64000,CODECS="mp4a.40.5"
http://example.com/audio/index.m3u8
Thanks in advance for any help!
PS: URLProtocol doesn't suitable for this https://developer.apple.com/forums/thread/75328
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?
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.
This is important for as since we need the HTTP caching policy to be applied for the .m3u8 manifest file of the stream.
Is this the intended behaviour of the download process or some kind of an issue?
Post not yet marked as solved
Because of our ASk value is exposed , we need to reset FairPlay Certificates..Anyone know how to reset FairPlay Certificates? (revoke -> recreat, or change ASk value only )