AVPlayer And Local Files

后端 未结 6 1620
名媛妹妹
名媛妹妹 2020-12-01 03:21

I am building a MP3 player for iOS that plays audio files hosted on the web. I want to offer the ability to play the files offline so I have the files downloading using ASIH

6条回答
  •  情书的邮戳
    2020-12-01 03:44

    Yes,thats possible to download and save the .mp3(or any kind of file)into NSDocument directory and then you can retrive from that and play by using AVAudioPlayer.

    NSString *downloadURL=**your url to download .mp3 file**
    
    NSURL *url = [NSURLURLWithString:downloadURL];
    
    NSURLConnectionalloc *downloadFileConnection = [[[NSURLConnectionalloc] initWithRequest:      [NSURLRequestrequestWithURL:url] delegate:self] autorelease];//initialize NSURLConnection
    
    NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,  YES) objectAtIndex:0];
    
    NSString *fileDocPath = [NSStringstringWithFormat:@"%@/",docDir];//document directory path
    
    [fileDocPathretain];
    
    NSFileManager *filemanager=[ NSFileManager defaultManager ];
    
    NSError *error;
    
    if([filemanager fileExistsAtPath:fileDocPath])
    {
    
    //just check existence of files in document directory
    }
    
    NSURLConnection is used to download the content.NSURLConnection Delegate methods are used to  support downloading.
    
    (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
    {
    
    }
    -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
    {
    NSFileManager *filemanager=[NSFileManagerdefaultManager];
    if(![filemanager fileExistsAtPath:filePath])
    {
    [[NSFileManagerdefaultManager] createFileAtPath:fileDocPath contents:nil attributes:nil];
    
    }
    NSFileHandle *handle = [NSFileHandlefileHandleForWritingAtPath:filePath];
    
    [handle seekToEndOfFile];
    
    [handle writeData:data];
    
    [handle closeFile];
     }
    
    -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
     {
     UIAlertView *alertView=[[UIAlertViewalloc]initWithTitle:@”"message:
     [NSStringstringWithFormat:@"Connection failed!\n Error - %@ ", [error localizedDescription]]   delegate:nilcancelButtonTitle:@”Ok”otherButtonTitles:nil];
      [alertView show];
      [alertView release];
      [downloadFileConnectioncancel];//cancel downloding
      }
    

    Retrieve the downloaded Audio and Play:

       NSString *docDir1 = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,   NSUserDomainMask, YES) objectAtIndex:0];
    
       NSString *myfilepath = [docDir1 stringByAppendingPathComponent:YourAudioNameinNSDOCDir];
    
       NSLog(@”url:%@”,myfilepath);
    
       NSURL *AudioURL = [[[NSURLalloc]initFileURLWithPath:myfilepath]autorelease];
    

    Just write your code to play Audio by using AudioURL

    I Like to know if u have any clarification in this regard.

    Thank you

提交回复
热议问题