将流式或缓冲的音频文件保存到文档文件夹

时间:2015-07-03 15:18:33

标签: ios objective-c streaming mpmovieplayercontroller

我想在播放时/之后将音频文件保存到文档文件夹。缓冲文件格式为mp3。 (如果可以在播放/缓冲时实时下载音频文件,那就更好了)

我在互联网上搜索了很多内容,但未能找到专门针对此要求的教程或示例代码。

这就是我缓冲mp3的方式

NSString *strMessageUrl = @"https://example.com/example.mp3";

NSLog(@"Url %@", strMessageUrl);

NSURL *audioUrl = [NSURL URLWithString:strMessageUrl];

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate.btnPause setHidden:NO];
[appDelegate.btnPlay setHidden:YES];
appDelegate.moviePlayer.contentURL=audioUrl;
appDelegate.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
[appDelegate.moviePlayer prepareToPlay];
[appDelegate.moviePlayer play];

感谢。

1 个答案:

答案 0 :(得分:0)

如果它是一个直接指向实际文件的URL,您只需创建一个NSURLRequest并在启动播放器的同时异步保存到磁盘。

NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[[NSURL alloc] initWithString:@"https://example.com/example.mp3"]];
[NSURLConnection sendAsynchronousRequest:urlRequest queue:[NSOperationQueue mainQueue]
                       completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
    if (data && connectionError != nil) {
        NSString *filePath = @"documentDirectory/example.mp3";
        if([data writeToFile:filePath atomically:YES]) {
            //keep track of filePath
        }
    } else {
        NSLog(@"Something went wrong!");
    }
}];