I am playing audio from my server using AVPlayer in my application. Now i want that when it completely buffer the audio then i can save that data in the application to play it later. So any guide or help that how can i access buffer data and save it for later use
相关问题
- CALayer - backgroundColor flipped?
- Core Data lightweight migration crashes after App
- Core Data lightweight migration crashes after App
- How can I implement password recovery in an iPhone
- State preservation and restoration strategies with
相关文章
- 现在使用swift开发ios应用好还是swift?
- UITableView dragging distance with UIRefreshContro
- Could I create “Call” button in HTML 5 IPhone appl
- TCC __TCCAccessRequest_block_invoke
- Where does a host app handle NSExtensionContext#co
- Xcode: Is there a way to change line spacing (UI L
- Unable to process app at this time due to a genera
- Swift - hide pickerView after value selected
The team at Calm has open-sourced our implementation to this. It's available as a CocoaPod. It's called
PersistentStreamPlayer
.It acts as a resourceLoader. The big benefit over other implementations is that it does not require the binary data to be in memory at any point, so it supports larger files.
Features include:
You can find it here: https://github.com/calmcom/PersistentStreamPlayer
I think your issue would be similar to downloading audio or music files from the server and then playing them in your app. Anyways if you want to save the audio in your app , wouldn't it be better to download it and then play it ? Anyways please check these links
How to download audio files from a server into my iPhone application?
Download music file from server and save in my app
Hope they help.
You could supply a
resourceLoader
delegate to take over control of the resource loading process fromAVPlayer
and then supply it the data as and when it requests and becomes available. The resource loader is a property onAVURLAsset
. I've documented a full solution on my blog but the main idea is to switch the protocol of your URL to something custom so AVURLAsset's resource loader requires your application's assistance in loading that URL. Then when you get theAVAssetResourceLoaderDelegate
callbacks, start downloading the file and try to respond to the pending requests received from those delegate callbacks as and when you have data. This will allow progressive loading/playback of the content without having to run a full blown HTTP server in your app or resorting to other complicated solutions.You can't access the buffer of the
AVPlayer
. Some hints: You can put previews (short versions of audios) of your audio files on your server, so that Your users could listen the previews before they download the full audio files, or you may search for custom open source audio stream players, maybe those will allow you to access the stream buffer. Good Luck!Easy to do...using the same url for your audio stream use NSURLConnection to get the data and save using NSFilehandler...just done it myself whilst streaming audio and saving at the same time to mp3...let me know if you need code sample...