问答:AVAudioPlayer 一边播放一边缓存Data

问:AVaudioPlayer 是用来播放本地数据的,用它来播放网络数据实在很为难,我现在实现了:网络数据的播放和拖动播放,但是AVaudioPlayer是把网络数据装载到内存后再播放的,如果数据很大,这给用户的体验太不要。我是再想怎么能让data异步加载,一边播放一边缓冲,这样给用户的体验更好。请问各位友友有什么好的方案?大家可以一起讨论讨论?

答:

用 http://github.com/mattgallagher/AudioStreamer

加几行就能把数据存下了。




我基于这个项目已经实现了一个楼主需要的版本,由于版权问题,无法贴出代码,不过可以提供一些思路:
1. 项目地址:
http://github.com/stigi/cocoa-soundcloud-streaming/tree/master/Classes
2. 建立一个后台线程负责抓取数据,根据具体情况,可以实现分段下载;
3. 前台有一个UI,可以让用户选择播放位置,指哪放哪,我实现的版本是国外一家音乐网站的iPhone客户端,他们使用离我们最近的服务器是在香港,在公司网络和家庭ADSL环境下,基本上3~5秒就可以开始播放,带宽只需要10KB/s就可以保证连续无间断。
4. 我实现的方案是先缓存,再播放,无论用户怎么拖动,都可以确保下载的每一个字节都是有效的、可以被保存和重用。

在目前的Wi-Fi和3G网络条件下,播放96Kbps的mp3文件基本上感觉不到缓冲间隙,更大码流的我没有测试过。
希望这个能对你有所帮助。





AboutIOSYoutubePlayer allows you to play youtube videos directly on iOS device using MPMoviePlayerController. I

https://github.com/DpzAtMicRO/IOSYoutubePlayer

你可能感兴趣的:(问答:AVAudioPlayer 一边播放一边缓存Data)