Streaming

RSS for tag

Deep dive into the technical specifications that influence seamless playback for streaming services, including bitrates, codecs, and caching mechanisms.

Streaming Documentation

Posts under Streaming subtopic

Post

Replies

Boosts

Views

Activity

AirPlay 2: video streaming - logs / debugging
Hello, We're developing a video streaming service. Can't get the video to stream on AirPlay2-enabled TVs, there is only a loader visible on the tV. We can only get the sounds to stream to AirPlay2 speakers. Media Stream Validator and HLS report on the playlists, shows that the video segments are recognized as something but can't process them. "Processed 0 of 600 segments" etc. We're at a loss on how to debug this. Is there any way to get access to AirPlay 2 logs to see what isn't working?
0
0
1.2k
Apr ’22
AVPlayer + cookies
It appears that, on initialization, an AVURLAsset has a copy of the cookies from HTTPCookieStorage.shared.cookies, unless otherwise specified with the options parameter. This array of HTTPCookie is merely a copy of iOS's cookie store at the time of initialization. If the OS's cookie store updates, the player/asset does not begin to use the most up-to-date cookies, instead using its original copy. How can I go about updating the player's/asset's cookie store to the current, most up-to-date, cookie store?
1
2
2k
Apr ’22
Crash on load of FairPlay DRM'd audio on Catalyst
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?
2
1
1k
Apr ’22
CSR without PEM
Hi,Refering to the "FairPlay Streaming Certificate Generation Guide"On page 7, we have created newreq.inf file and generated certreq.csr However, we didn't apply "certreq -accept newcert.pem"Then, we continue to create FPS Certificate by uploading our certreq.csr.We received the ASk and fairplay.cerWill this be a problem?Is there anyway we can amend the private key? Or do we need to resubmit FPS Deployment package to redo the process?Thanks.
4
0
1.8k
Apr ’22
mediastreamvalidator + hlsreport - Meaning of the "Discontinuity information"
Hi, I ran mediastreamvalidator and hlsreport for the first time and if the "issues" (MUST and SHOULD) sentence are perfectly understandable, I was wondering the meaning of the 2 tables at the end of the report .... in a "Discontinuity Information" section there is 2 table called "discontinuity duration table " and "start time table" is there any documentation on that ? is it a symptom of an issue with the CMAF MP4 file created by thye packager I use ? thanks for your help
1
0
955
Jun ’22
HLS black screen on all ios devices
Our custom software takes RTSP from cctv cameras and turns it into an RTSP stream that we play through calppr player. One particular model of camera wont play on ios devices. It is just all black when trying to play it. on ios (all versions of ios) It still works great on PC, Mac, and Android. Our hls stream is video only. There is no audio. The problem is not with the player because I tested other players and they do the same thing on iOS. Black screen or at best they freeze on the first picture and don't ever move. Any advice on what the problem may be? Thank you so much!
1
0
1.9k
Jun ’22
Hide subtitle track or audio track on the AirPlay device
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.
0
0
1.5k
Jun ’22
How to pause HLS live using AV-Player
Used the PreferredForwardBufferDuration, this also after 2 - 3 minutes unable to pause the video, its catching live if pause duration more than 2 -3 minutes. Example:  [self.player.currentItem setPreferredForwardBufferDuration:60];   self.player.automaticallyWaitsToMinimizeStalling = YES;  self.player.currentItem.canUseNetworkResourcesForLiveStreamingWhilePaused = NO; How to stop buffering the AV-Player during pause state How to clear the AV-Player buffer during pause. SeekToTime is not working properly for live channel, I want to seek just one/two sec back. With SeekToTime if av-player unable to seek to previous time line its catching the future position. Manifest providing to av-player, #EXT-X-VERSION:4 #EXT-X-TARGETDURATION:1 #EXT-X-MEDIA-SEQUENCE:1 #EXT-X-KEY:METHOD=AES- http://ServerAddress/f1655359642.ts #EXT-X-KEY:METHOD=AES- http://ServerAddress/f1655359643.ts #EXT-X-KEY:METHOD=AES- #EXTINF:0.984, http://ServerAddress/f1655359644.ts
0
0
1.2k
Jun ’22
Where can I get the private key to decrypt SPC requested from safari on Mac OS?
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.
0
0
848
Jun ’22
ASK for Development Credentials
Hello!We are developing a propietary KSM for our company. We have already access to our FairPlay certificate and ASK but we would like to not use production credentials in development process. We have found a development certificate (Common Name: Partner2) in "FairPlay_Streaming_Server_SDK_v4.2.0" but we have not found the associated ASK for that certificate.Where can we found the ASK?Thanks!
3
0
1.9k
Jun ’22
[AVFoundation] Error in selection audible mediagroup - HLS.
Hi everybody, I think I have encountered a problem when selecting the new audible mediagroup in the hls. I will explain the casuistry below: The hls manifest contains 2-3 audio tracks, which are parsed correctly by AVFoundation giving rise to the different audible mediagroups. When we select a new audio track, we do it as the documentation says: guard let item = currentPlayerItem, let mediaSelectionGroup = item.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) else { return } let selected = mediaSelectionGroup.options[index] item.select(selected, in: mediaSelectionGroup) So far everything works correctly, the problem is when switching audio tracks constantly and repeatedly. If we do this, the playback stays for a few seconds without any sound, it seems to be muted or laggy. After investigating in Charles, we see that when repeating the process mentioned above, the audio track is requested correctly and the ts are returned correctly, but until the video is requested again and the next video ts is returned, the audio is not played. I attach a screenshot of charles so that it can be seen correctly: In the selected part, you can see that the new audio track is requested and until avplayer does not ask again for the bitrate update, the audio does not play. What could be happening? Is there anything in avfoundation that we can change so that it doesn't happen? Thanks in advance, Luis Martínez
0
0
764
Jul ’22
Video Streaming Site and working with Safari Autoplay Policy
Hello all, I am currently developing a video streaming site and am currently working on the video player. The site will be serving video content using HLS given that this will be quite sizable and long video content. Given that the main functionality of the site is to watch streaming video, when a user clicks on a video to watch, when the video player page opens, the desire is to have the video start playing automatically with sound. Safari autoplay policy basically rejects attempts to autoplay video content with audio unless the audio starts muted, otherwise, the user needs to interact with the player in order to start the video playing with audio unmuted. Given that the main purpose of the site is to watch these videos, it would be hugely detrimental to require the user to interact with the player to either start playing the video, or to unmute it. Many sites such as YouTube, Twitch, and others obviously have autoplay functionality that works as I would expect for a video-centric site in Safari. Given their size, I imagine they have some agreement with Safari team to have their site pre-authorized to allow autoplay with audio. How do I go about doing this? Hoping someone might be able to share some information that would be useful to ensure I can have things configured correctly such that my Safari users won't have to suffer having to manually start playing, or turn on their audio in order to enjoy the videos the same way Chrome and Firefox users will automatically. Thanks!
0
0
878
Jul ’22
Shareplay with live streams: HLS manifest requirements?
We're working on enabling Shareplay for our video streaming product, but there's some confusion on what Shareplay/Group Activities actually uses to sync viewing experiences across the group, especially for a live stream. If group members are viewing different HLS variants, the file names of the segments won't be the same (they will probably be very similar, but that isn't guaranteed). So the most likely thing in the HLS manifest for synchronizing is the EXT-X-PROGRAM-DATE-TIME. The problem is that we do session personalization with ads, which makes the EXT-X-PROGRAM-DATE-TIME also get personalized. In order for Group Activities to keep members in sync, do the EXT-X-PROGRAM-DATE-TIME values need to always be consistent for content segments ("content" meaning not-ad-breaks)? If not, can anyone help us understand how it keeps members in sync?
1
0
1k
Jul ’22
HLS Streaming Issue
Our app is having issues streaming the HLS videos on iPhones internationally. We are based in Australia, and the videos play in-app when in Australia. But when in other countries, like the USA or the UK, the videos don't play. Sometimes the app crashes when we try to load the video. All the videos are of the same quality, average size and final quality is the same. This same issue doesn't occur on android. Does anyone have any similar issues with playing HLS videos on iPhones internationally? It is worthwhile to note that the image elements in the video can be seen, but the video element shows up as a black screen. It tells me that the video is playing, but it's not displaying to users.
0
0
843
Aug ’22
Error trying to play DRM content (flutter/fairplay)
I'm trying to play a video hosted in CloudFront. It works fine from Android, from the website and even from another native iOS app. This is the error I'm getting, I can't find a similar error code 15622 in the forum: [tcp] tcp_input [C16.1:3] flags=[R] seq=3391960260, ack=0, win=0 state=LAST_ACK rcv_nxt=3391960260, snd_una=830933021 [tcp] tcp_input [C17.1:3] flags=[R] seq=1838595670, ack=0, win=0 state=LAST_ACK rcv_nxt=1838595670, snd_una=719010170 [tcp] tcp_input [C18.1:3] flags=[R] seq=4156548764, ack=0, win=0 state=LAST_ACK rcv_nxt=4156548764, snd_una=4036511524 [tcp] tcp_input [C18.1:3] flags=[R] seq=4156548764, ack=0, win=0 state=CLOSED rcv_nxt=4156548764, snd_una=4036511524 Failed to load video: Error Domain=CoreMediaErrorDomain Code=-15622 "See -[AVPlayerItem errorLog] for 17 events" UserInfo={NSDebugDescription=See -[AVPlayerItem errorLog] for 17 events} flutter: flutter: PlatformException(VideoError, Failed to load video: The operation couldn’t be completed. (CoreMediaErrorDomain error -15622.), null, null)
2
0
1.1k
Aug ’22
Unreliable offline playback of HLS stream
Hello all, I recently encountered a problem similar to what has been asked here (sadly no answer): https://developer.apple.com/forums/thread/127808?login=true When downloading an HLS stream via an aggregate task (regardless if I set it to use preferred, or all media selections) I get an error on offline playback. If my device is connected, all seems to work ok. Upon inspection of the boot.xml in the .movpkg file, I can see some streams report <Complete>NO</Complete></Stream> I cannot quite work out why this is. Before playback the resultant AVURLAsset's status is not ready. The movie has multiple audio and a single subtitle and video tracks. It is important to mention, playback seems to work for some of my test videos. I also use a VPN. Any assistance would be much appreciated.
0
0
1.1k
Aug ’22
AirPlay 2: video streaming - logs / debugging
Hello, We're developing a video streaming service. Can't get the video to stream on AirPlay2-enabled TVs, there is only a loader visible on the tV. We can only get the sounds to stream to AirPlay2 speakers. Media Stream Validator and HLS report on the playlists, shows that the video segments are recognized as something but can't process them. "Processed 0 of 600 segments" etc. We're at a loss on how to debug this. Is there any way to get access to AirPlay 2 logs to see what isn't working?
Replies
0
Boosts
0
Views
1.2k
Activity
Apr ’22
AVPlayer + cookies
It appears that, on initialization, an AVURLAsset has a copy of the cookies from HTTPCookieStorage.shared.cookies, unless otherwise specified with the options parameter. This array of HTTPCookie is merely a copy of iOS's cookie store at the time of initialization. If the OS's cookie store updates, the player/asset does not begin to use the most up-to-date cookies, instead using its original copy. How can I go about updating the player's/asset's cookie store to the current, most up-to-date, cookie store?
Replies
1
Boosts
2
Views
2k
Activity
Apr ’22
Crash on load of FairPlay DRM'd audio on Catalyst
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?
Replies
2
Boosts
1
Views
1k
Activity
Apr ’22
CSR without PEM
Hi,Refering to the "FairPlay Streaming Certificate Generation Guide"On page 7, we have created newreq.inf file and generated certreq.csr However, we didn't apply "certreq -accept newcert.pem"Then, we continue to create FPS Certificate by uploading our certreq.csr.We received the ASk and fairplay.cerWill this be a problem?Is there anyway we can amend the private key? Or do we need to resubmit FPS Deployment package to redo the process?Thanks.
Replies
4
Boosts
0
Views
1.8k
Activity
Apr ’22
mediastreamvalidator + hlsreport - Meaning of the "Discontinuity information"
Hi, I ran mediastreamvalidator and hlsreport for the first time and if the "issues" (MUST and SHOULD) sentence are perfectly understandable, I was wondering the meaning of the 2 tables at the end of the report .... in a "Discontinuity Information" section there is 2 table called "discontinuity duration table " and "start time table" is there any documentation on that ? is it a symptom of an issue with the CMAF MP4 file created by thye packager I use ? thanks for your help
Replies
1
Boosts
0
Views
955
Activity
Jun ’22
HLS black screen on all ios devices
Our custom software takes RTSP from cctv cameras and turns it into an RTSP stream that we play through calppr player. One particular model of camera wont play on ios devices. It is just all black when trying to play it. on ios (all versions of ios) It still works great on PC, Mac, and Android. Our hls stream is video only. There is no audio. The problem is not with the player because I tested other players and they do the same thing on iOS. Black screen or at best they freeze on the first picture and don't ever move. Any advice on what the problem may be? Thank you so much!
Replies
1
Boosts
0
Views
1.9k
Activity
Jun ’22
Hide subtitle track or audio track on the AirPlay device
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.
Replies
0
Boosts
0
Views
1.5k
Activity
Jun ’22
How to pause HLS live using AV-Player
Used the PreferredForwardBufferDuration, this also after 2 - 3 minutes unable to pause the video, its catching live if pause duration more than 2 -3 minutes. Example:  [self.player.currentItem setPreferredForwardBufferDuration:60];   self.player.automaticallyWaitsToMinimizeStalling = YES;  self.player.currentItem.canUseNetworkResourcesForLiveStreamingWhilePaused = NO; How to stop buffering the AV-Player during pause state How to clear the AV-Player buffer during pause. SeekToTime is not working properly for live channel, I want to seek just one/two sec back. With SeekToTime if av-player unable to seek to previous time line its catching the future position. Manifest providing to av-player, #EXT-X-VERSION:4 #EXT-X-TARGETDURATION:1 #EXT-X-MEDIA-SEQUENCE:1 #EXT-X-KEY:METHOD=AES- http://ServerAddress/f1655359642.ts #EXT-X-KEY:METHOD=AES- http://ServerAddress/f1655359643.ts #EXT-X-KEY:METHOD=AES- #EXTINF:0.984, http://ServerAddress/f1655359644.ts
Replies
0
Boosts
0
Views
1.2k
Activity
Jun ’22
Where can I get the private key to decrypt SPC requested from safari on Mac OS?
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.
Replies
0
Boosts
0
Views
848
Activity
Jun ’22
ASK for Development Credentials
Hello!We are developing a propietary KSM for our company. We have already access to our FairPlay certificate and ASK but we would like to not use production credentials in development process. We have found a development certificate (Common Name: Partner2) in "FairPlay_Streaming_Server_SDK_v4.2.0" but we have not found the associated ASK for that certificate.Where can we found the ASK?Thanks!
Replies
3
Boosts
0
Views
1.9k
Activity
Jun ’22
[AVFoundation] Error in selection audible mediagroup - HLS.
Hi everybody, I think I have encountered a problem when selecting the new audible mediagroup in the hls. I will explain the casuistry below: The hls manifest contains 2-3 audio tracks, which are parsed correctly by AVFoundation giving rise to the different audible mediagroups. When we select a new audio track, we do it as the documentation says: guard let item = currentPlayerItem, let mediaSelectionGroup = item.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) else { return } let selected = mediaSelectionGroup.options[index] item.select(selected, in: mediaSelectionGroup) So far everything works correctly, the problem is when switching audio tracks constantly and repeatedly. If we do this, the playback stays for a few seconds without any sound, it seems to be muted or laggy. After investigating in Charles, we see that when repeating the process mentioned above, the audio track is requested correctly and the ts are returned correctly, but until the video is requested again and the next video ts is returned, the audio is not played. I attach a screenshot of charles so that it can be seen correctly: In the selected part, you can see that the new audio track is requested and until avplayer does not ask again for the bitrate update, the audio does not play. What could be happening? Is there anything in avfoundation that we can change so that it doesn't happen? Thanks in advance, Luis Martínez
Replies
0
Boosts
0
Views
764
Activity
Jul ’22
Video Streaming Site and working with Safari Autoplay Policy
Hello all, I am currently developing a video streaming site and am currently working on the video player. The site will be serving video content using HLS given that this will be quite sizable and long video content. Given that the main functionality of the site is to watch streaming video, when a user clicks on a video to watch, when the video player page opens, the desire is to have the video start playing automatically with sound. Safari autoplay policy basically rejects attempts to autoplay video content with audio unless the audio starts muted, otherwise, the user needs to interact with the player in order to start the video playing with audio unmuted. Given that the main purpose of the site is to watch these videos, it would be hugely detrimental to require the user to interact with the player to either start playing the video, or to unmute it. Many sites such as YouTube, Twitch, and others obviously have autoplay functionality that works as I would expect for a video-centric site in Safari. Given their size, I imagine they have some agreement with Safari team to have their site pre-authorized to allow autoplay with audio. How do I go about doing this? Hoping someone might be able to share some information that would be useful to ensure I can have things configured correctly such that my Safari users won't have to suffer having to manually start playing, or turn on their audio in order to enjoy the videos the same way Chrome and Firefox users will automatically. Thanks!
Replies
0
Boosts
0
Views
878
Activity
Jul ’22
Shareplay with live streams: HLS manifest requirements?
We're working on enabling Shareplay for our video streaming product, but there's some confusion on what Shareplay/Group Activities actually uses to sync viewing experiences across the group, especially for a live stream. If group members are viewing different HLS variants, the file names of the segments won't be the same (they will probably be very similar, but that isn't guaranteed). So the most likely thing in the HLS manifest for synchronizing is the EXT-X-PROGRAM-DATE-TIME. The problem is that we do session personalization with ads, which makes the EXT-X-PROGRAM-DATE-TIME also get personalized. In order for Group Activities to keep members in sync, do the EXT-X-PROGRAM-DATE-TIME values need to always be consistent for content segments ("content" meaning not-ad-breaks)? If not, can anyone help us understand how it keeps members in sync?
Replies
1
Boosts
0
Views
1k
Activity
Jul ’22
HLS Streaming Issue
Our app is having issues streaming the HLS videos on iPhones internationally. We are based in Australia, and the videos play in-app when in Australia. But when in other countries, like the USA or the UK, the videos don't play. Sometimes the app crashes when we try to load the video. All the videos are of the same quality, average size and final quality is the same. This same issue doesn't occur on android. Does anyone have any similar issues with playing HLS videos on iPhones internationally? It is worthwhile to note that the image elements in the video can be seen, but the video element shows up as a black screen. It tells me that the video is playing, but it's not displaying to users.
Replies
0
Boosts
0
Views
843
Activity
Aug ’22
Error trying to play DRM content (flutter/fairplay)
I'm trying to play a video hosted in CloudFront. It works fine from Android, from the website and even from another native iOS app. This is the error I'm getting, I can't find a similar error code 15622 in the forum: [tcp] tcp_input [C16.1:3] flags=[R] seq=3391960260, ack=0, win=0 state=LAST_ACK rcv_nxt=3391960260, snd_una=830933021 [tcp] tcp_input [C17.1:3] flags=[R] seq=1838595670, ack=0, win=0 state=LAST_ACK rcv_nxt=1838595670, snd_una=719010170 [tcp] tcp_input [C18.1:3] flags=[R] seq=4156548764, ack=0, win=0 state=LAST_ACK rcv_nxt=4156548764, snd_una=4036511524 [tcp] tcp_input [C18.1:3] flags=[R] seq=4156548764, ack=0, win=0 state=CLOSED rcv_nxt=4156548764, snd_una=4036511524 Failed to load video: Error Domain=CoreMediaErrorDomain Code=-15622 "See -[AVPlayerItem errorLog] for 17 events" UserInfo={NSDebugDescription=See -[AVPlayerItem errorLog] for 17 events} flutter: flutter: PlatformException(VideoError, Failed to load video: The operation couldn’t be completed. (CoreMediaErrorDomain error -15622.), null, null)
Replies
2
Boosts
0
Views
1.1k
Activity
Aug ’22
Unreliable offline playback of HLS stream
Hello all, I recently encountered a problem similar to what has been asked here (sadly no answer): https://developer.apple.com/forums/thread/127808?login=true When downloading an HLS stream via an aggregate task (regardless if I set it to use preferred, or all media selections) I get an error on offline playback. If my device is connected, all seems to work ok. Upon inspection of the boot.xml in the .movpkg file, I can see some streams report <Complete>NO</Complete></Stream> I cannot quite work out why this is. Before playback the resultant AVURLAsset's status is not ready. The movie has multiple audio and a single subtitle and video tracks. It is important to mention, playback seems to work for some of my test videos. I also use a VPN. Any assistance would be much appreciated.
Replies
0
Boosts
0
Views
1.1k
Activity
Aug ’22