2012-04-20 47 views
20

我正在开发音乐iPhone应用程序。我想为用户提供一些选项,以便他们可以通过流式传输来收听歌曲/音乐,或者他们可以通过在应用下载音乐。我知道如何以编程方式在应用中流式传输音频文件。但是,我不知道如何下载应用程序中的音频文件并播放音频。用户也可以在下载时暂停下载。有可能吗?任何人都可以请指导我,请为我分享任何示例代码或教程?我还有一个疑问:你能帮我在应用程序内创建一个文件夹吗?请帮帮我。提前致谢。如何从互联网上下载音频/视频文件并存储在iPhone应用程序中?

+1

你应该接受@Liam乔治Betsworth的回答,他做了他最好的。 – swiftBoy 2013-01-29 08:10:09

回答

52

创建文件夹

对于每一个应用程序,你有一个Documents Folder。您在应用中使用的任何文件都存储在此处。如果你想在这里创造更多的目录,然后你会做这样的事情:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder 
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"MyNewFolder"]; 

if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]) 
    [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; //Create folder if it doesn't already exist 

下载

如果你想从互联网上下载的音频文件,然后你想看看的异步的做法。这意味着应用程序可以在下载发生在后台时继续执行任务。

对此,我建议您使用ASIHTTPREQUEST。对于执行任何下载请求非常有用,可为您提供多种选项,例如暂停下载(根据您的要求)。

该网站提供了大量有关下载和存储文件的文档。看看下载文件部分this页面。

你只希望做这样的事情:

NSURL *url = [NSURL URLWithString:@"http://www.fileurl.com/example.mp3"]; 
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
[request setDownloadDestinationPath:[NSString stringWithFormat:@"%@",dataPath]]; //use the path from earlier 
[request setDelegate:self]; 
[request startAsynchronous]; 

然后,只需处理通过ASIHTTPRequest提供委托方法的进度和完成。

播放

播放该文件是非常简单的。一旦它在设备上,并且您知道它在哪里,只需将其加载到音频播放器中即可。

这里有一个很好的教程,使用AVAudioPlayer播放声音。在你的情况下使用它的一个非常简单的例子是:

NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/audiofile.mp3",dataPath]; 

NSError *error; 
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; 

if (audioPlayer == nil) 
    NSLog([error description]); 
else 
    [audioPlayer play]; 
+1

很好的评论,很好的解释! +1 – onetwopunch 2012-10-29 23:13:31

+1

+1这样一个很好的答案:),这应该被接受,想知道为什么人们问问题和消失:( – swiftBoy 2013-01-29 08:12:21

+1

@Liam很好的回答:) +1 – 2013-06-25 10:02:41

0

是的,你可以通过AVAudioPlayer下载音频文件和播放下载的文件。我不完全知道如何在下载时暂停,但我已经下载了音频并播放。您可以从ASIHTTP请求或其他下载。

您可以按照这些链接。

  1. http://allseeing-i.com/ASIHTTPRequest/How-to-use#tracking_progress
  2. About download file using ASIHttpRequest
+1

+1我推荐使用ASIHTTPRequest – CarlJ 2012-04-20 12:19:12

+0

是的,Sure ASIHTTPRequest是最好的方法,你应该用这个下载你的音频文件,如果问题出现的话请让我知道,我会尽力解决,insha阿拉。 – 2012-04-20 14:14:53

相关问题