2012-04-20 115 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

相關問題