如何从互联网下载audio/video文件,并存储在iPhone应用程序?

我正在开发一个音乐iPhone应用程序。 我想给用户一些select,以便他们可以通过stream媒体收听歌曲/音乐,或者他们可以在应用程序中下载音乐 。 我知道如何以编程方式在应用程序中stream式传输audio文件。 但是,我不知道如何下载应用程序中的audio文件,并下载后播放audio。 用户也可以在下载时暂停下载。 有可能吗? 任何人都可以请指导我,请为我分享任何示例代码或教程? 我还有一个怀疑:你能帮我在应用程序内创build一个文件夹吗? 请帮帮我。 提前致谢。

创build一个文件夹

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

 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 

下载

如果你想从互联网下载audio文件,那么你想看看这样做的asynchronous方法。 这意味着应用程序可以在下载发生在后台时继续执行任务。

为此,我build议您使用ASIHTTPREQUEST 。 执行任何下载请求是非常好的,为您提供很多选项,例如暂停下载(按照您的要求)。

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

你只需要做一些事情:

 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提供的委托方法处理进度和完成。

播放

播放文件非常简单。 一旦它在设备上,你知道它在哪里,只需将其加载到audio播放器。

这里有一个伟大的教程使用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]; 

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

你可以按照这些链接。

  1. http://allseeing-i.com/ASIHTTPRequest/How-to-use#tracking_progress
  2. 关于使用ASIHttpRequest的下载文件