2015-04-02 60 views
-2

我試圖設計音頻流應用程序一切正常,但我不知道如何下載音頻文件到設備並閱讀後記。如何從xcode中的目錄文件播放音頻?

  1. Download audio to document directory.
  2. play it back from document directory.

添加代碼:

NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentDirectory = [path firstObject]; 
NSString *filePath = [documentDirectory stringByAppendingPathComponent:@"evet.mp3"]; 
// UIImage *cellImage = [[UIImage alloc] initWithContentsOfFile:filePath]; 
NSLog(@"%@",filePath); 
NSError *error; 
NSData *_objectData = [NSData dataWithContentsOfURL:[NSURL URLWithString:filePath]]; 
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:_objectData error:&error]; 
[audioPlayer play]; 
+1

你有什麼試過的?你卡在哪裏?你現在的問題看起來像一個代碼請求,這是皺眉,可能會讓你失望。 – rckoenes 2015-04-02 14:38:21

+0

我可以將音頻下載到設備中,但我無法從目錄中回放 – Aree 2015-04-02 14:39:38

+2

添加無法使用的代碼。 – zaph 2015-04-02 14:43:21

回答

0
根據您發佈試試這個代碼

變化

NSData *_objectData = [NSData dataWithContentsOfURL:[NSURL URLWithString:filePath]]; 
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:_objectData error:&error]; 

這樣:

NSURL *fileURL = [NSURL fileURLWithPath:filePath isDirectory:NO]; 
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:&error]; 

AVAudioPlayer想要一個URL對象(必須是本地URL不是遠程Web地址,因此fileURLWithPath:)而不是數據本身。

您試圖將NSData本身提供給音頻播放器。

+0

Mr.Freerunnering謝謝但仍未播放 – Aree 2015-04-02 15:05:44

+0

在'[audioPlayer play];'。'NSLog(@「error:%@」,error)後面加上這一行;'併發布它說錯誤的內容。 – 2015-04-02 15:10:11

+0

它說以下內容:-( 錯誤域= NSOSStatusErrorDomain代碼= 2003334207「該操作無法完成。(OSStatus錯誤2003334207.)」 – Aree 2015-04-02 17:16:39

0

獲取您的音頻文件中的文件目錄

- (NSString *)getCacheDirectoryPathForAudio:(NSString *)filePath 
{ 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); //create an array and store result of our search for the documents directory in it 
    NSString *documentsDirectory = [paths objectAtIndex:0]; //create NSString object, that holds our exact path to the documents directory 

    NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp3", filePath]]; //add 

    return fullPath; 
} 

啓動播放器,文件路徑

NSString *pathToSaveAudioString = [self getCacheDirectoryPathForAudio:@「filename」]; 

    NSURL* url = [NSURL fileURLWithPath:pathToSaveAudioString]; 
    BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:pathToSaveAudioString]; 
    if (fileExists) { 
     NSError* error = nil; 
     self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; 
     [self.player setDelegate:self]; 
     if(!self.player) 
     { 
      NSLog(@"Error creating player: %@", error); 
     } 
    } 
    else 
    { 
      NSLog(@「File Not Exist: %@"); 
    } 

,並使用

[self.player play]; 

使用委託方法來檢查狀態

#pragma mark - AVAudioPlayerDelegate 
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag 
{ 

} 

- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error 
{ 

} 

更多詳細信息關於 http://iosdeveloperzone.com/2012/10/01/tutorial-playing-audio-with-avaudioplayer/