如何从互联网下载音频/视频文件并存储在 iPhone 应用程序中?
Posted
技术标签:
【中文标题】如何从互联网下载音频/视频文件并存储在 iPhone 应用程序中?【英文标题】:How to download audio/video files from internet and store in iPhone app? 【发布时间】:2012-05-01 23:41:07 【问题描述】:我正在开发一个用于音乐的 iPhone 应用程序。我想为用户提供一些选项,以便他们可以通过流媒体方式收听歌曲/音乐,或者他们可以在应用中下载音乐。我知道如何以编程方式在应用程序中流式传输音频文件。但是,我不知道如何在应用中下载音频文件并在下载后播放音频。用户还可以在下载时暂停下载。有可能吗?谁能指导我并为我分享任何示例代码或教程?我还有一个疑问:您能帮我在应用程序内创建一个文件夹吗?请帮我。提前致谢。
【问题讨论】:
你应该接受@Liam George Betsworth 的回答,他已经尽力了。 【参考方案1】:创建文件夹
对于每个应用程序,您都有一个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 以获得如此好的答案:),这应该被接受,想知道为什么人们会问问题然后消失:( 我推荐使用 AFNetworking 而不是 ASIHTTPRequest,不过@LiamGeorgeBetsworth 的回答真是太棒了 是的,我同意@GangstaGraham 他应该使用AFNetworking,但请查看日期。当时还没有 AFNetworking 课程。 @EshwarChaitanya 最好使用 AFNetworking,因为 ASIHTTPRequest 类有很多经常会破坏应用程序的错误。几乎每个人都转向了 AFNetworking。我建议你也尽快这样做。【参考方案2】:是的,您可以通过 AVAudioPlayer 下载音频文件并播放下载的文件。我不完全知道下载时如何暂停,但我已经下载了音频并播放了。您可以从 ASIHTTP Request 或其他下载。
您可以点击这些链接。
-
http://allseeing-i.com/ASIHTTPRequest/How-to-use#tracking_progress
About download file using ASIHttpRequest
【讨论】:
是的,当然 ASIHTTPRequest 是最好的方法,你应该使用这个下载你的音频文件,如果出现问题,请告诉我,我会尽力解决,insha Allah。以上是关于如何从互联网下载音频/视频文件并存储在 iPhone 应用程序中?的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式检查视频或音频文件格式是不是可以在 iPhone 中播放?
如何将图像、pdf、音频、视频和任何文件系统从 iphone 本地内存上传到服务器(API)