Hello Apple Community, We are working on a real-time streaming feature where we receive chunks of raw MP4 data through a custom protocol and store them in a buffer (array). Our goal is to use these data chunks to play a continuous video stream in AVPlayer.
What We've Tried:
- Custom URL Scheme with AVAssetResourceLoaderDelegate:
-
We implemented a custom URL scheme (customscheme://) to serve the buffered data using AVAssetResourceLoaderDelegate.
-
The method shouldWaitForLoadingOfRequestedResource is called only during the initial allocation. It doesn't get triggered when new chunks are appended to the buffer.
-
Despite appending new data to the buffer, AVPlayer doesn’t request further chunks from the delegate.
What We Need:
We are looking for a solution where:
-
The player continuously fetches data from the buffer as new chunks are added.
-
The playback remains smooth and uninterrupted, even with real-time data being appended.
-
Ideally, this solution works with AVPlayer while adhering to HLS-like behavior without implementing an HLS server.
Questions:
- Is AVAssetResourceLoaderDelegate the right approach for this use case?
- If so, how can we ensure shouldWaitForLoadingOfRequestedResource is called whenever new data is available in the buffer?
-
Are there alternative APIs or recommended patterns for playing real-time MP4 data chunks in AVPlayer?
-
Would implementing a custom FFmpeg-based player be necessary, or can this be achieved using AVPlayer and its APIs?
We appreciate any guidance, suggestions, or examples that can help us achieve this. Thank you!