使用AVAudioPlayer播放网络上的音频
2015-09-03 13:44
579 查看
注:ios中的AVAudioPlayer不支持变下边播放,所以只能存储到本地进行播放
一、在.m中定义对象
#define AUDIO_PATH @"/AudioCache"
@property (nonatomic,strong)AVAudioPlayer* player;
二、根据路径,创建目录,如果创建失败,则返回
三、将网络音频转化为NSDate,并写入文件
四、播放音频
五、停止播放音频
一、在.m中定义对象
#define AUDIO_PATH @"/AudioCache"
@property (nonatomic,strong)AVAudioPlayer* player;
二、根据路径,创建目录,如果创建失败,则返回
NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES) objectAtIndex:0]; NSString* fullPath = [cachPath stringByAppendingString:AUDIO_PATH]; NSString* filePath = @""; if([self createDirectory:fullPath]) { filePath = [NSString stringWithFormat:@"%@/%@.aud",fullPath,item.id]; } else { return; }
-(BOOL)createDirectory:(NSString*)audioPath { NSFileManager* fileManager = [NSFileManager defaultManager]; BOOL isDirExist = [fileManager fileExistsAtPath:audioPath isDirectory:nil]; if(!isDirExist) { BOOL bCreateDir = [fileManager createDirectoryAtPath:audioPath withIntermediateDirectories:YES attributes:nil error:nil]; if(!bCreateDir){ NSLog(@"创建文件夹失败"); return NO; } } return YES; }
三、将网络音频转化为NSDate,并写入文件
NSURL* url = [[NSURL alloc] initWithString:item.audUrl]; NSData* audioData = [NSData dataWithContentsOfURL:url];
//atomically:YES,表示写成功后(会写入到临时文件中)再覆盖文件,若写入失败,则不会覆盖文件,这样更安全。 BOOL isSuccess = NO; if(![[NSFileManager defaultManager] fileExistsAtPath:filePath]) { isSuccess = [audioData writeToFile:filePath atomically:YES]; } else { isSuccess = YES; }
四、播放音频
if(!isSuccess){ NSLog(@"写入失败"); return; }else { NSLog(@"写入成功"); //播放本地音乐 if(!TARGET_IPHONE_SIMULATOR) { self.player = nil; NSError *playerError; NSURL* fileURL = [NSURL fileURLWithPath:filePath]; self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:&playerError]; if(self.player == nil) { NSLog(@"ERror creating player: %@", [playerError description]); } else { [self.player play]; } } }
五、停止播放音频
[self.player stop];
相关文章推荐
- 探寻社交网络中的关系: 统计网络模型初探
- TCPIP三次握手
- HTTP协议总结
- HDU1532Drainage Ditches(网络流入门+EK模板题)
- 如何理解HTTP响应的状态码?
- 下个Win10 Mobile预览版将修复10512系统众多Bug 包括网络共享
- 黑马程序员------Java基础-----网络编程
- TCP和UDP的那些事
- LINUX网络管理之Centos6&&Centos7
- TCP/IP源码学习(47)——socket与VFS的关联(1) 2 http://blog.chinaunix.net/uid-23629988-id-3080166.html
- Active Network 活跃网络 面试
- http--响应请求状态码
- Linux网络管理工具总结
- 网络通信 Tcp
- 【2015年奇虎360|绿盟科技|唯品会|4399秋招岗位分析及内推】一大波网络|安全|运维岗位来袭~
- TCP与UDP协议
- 黑马程序员——网络编程——网络编程概述,UDP协议,TCP协议
- The type javax.http.HttpServletRequest cannot be resolved.It is indirectly
- 神经网络-课程作业记录
- 计算机网络之面试常考(转)(后期补充)