如何将 nsdata 转换为 MPMediaitem 歌曲 iOS Sdk

Posted

技术标签:

【中文标题】如何将 nsdata 转换为 MPMediaitem 歌曲 iOS Sdk【英文标题】:how to convert nsdata to MPMediaitem song iOS Sdk 【发布时间】:2012-04-23 07:29:47 【问题描述】:

我将 MPMediaItem 转换为 NSData 并将其存储在数据库中,现在我必须将该 NSData 转换为 MPMediaItem 才能在媒体播放器中播放该歌曲。 使用下面的代码将 MPMediaItem 转换为 NSData:

NSURL *url = [song valueForProperty: MPMediaItemPropertyAssetURL];

AVURLAsset *songAsset = [AVURLAsset URLAssetWithURL: url options:nil];

AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset: songAsset
                                                                  presetName: AVAssetExportPresetPassthrough];

exporter.outputFileType = @"public.mpeg-4";
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *exportFile = [documentsDirectory stringByAppendingPathComponent:           
                        @"exported.mp4"];

NSURL *exportURL = [[NSURL fileURLWithPath:exportFile] retain];
exporter.outputURL = exportURL; 

// do the export
// (completion handler block omitted) 
[exporter exportAsynchronouslyWithCompletionHandler:
 ^
     NSData *data = [NSData dataWithContentsOfFile: [documentsDirectory 
                                                     stringByAppendingPathComponent: @"exported.mp4"]];


 ];

谁能告诉我如何将 NSData 转换为 MPMediaItem。

【问题讨论】:

谁能回答这个问题 对不起,但我使用了与您相同的代码将 MPMediaItem 转换为 NSData。但它在我身边不起作用。你知道是什么原因吗? 【参考方案1】:

你不能。 MPMediaItem 代表 iPod 库中的一个项目,但第三方应用程序无法向该库添加任何内容。

但是,您可以将 NSData 对象写入文件,然后将其 URL 与 AVPlayerItem/AVPlayerMPMoviePlayerController 一起使用(不要被名称所迷惑,它也可以仅播放音频文件)。

【讨论】:

感谢您的回复...您能否发布一些代码以使用 AVPlayer 和我存储的 NSData 对象播放歌曲...这对我非常有用 如何获取MPMediaItem的NSData?

以上是关于如何将 nsdata 转换为 MPMediaitem 歌曲 iOS Sdk的主要内容,如果未能解决你的问题,请参考以下文章

如何将NSString值转换为NSData?

如何将 UIImage 转换为 NSData 或 CFDataRef?

如何将 mp4 转换为 NSData?

如何将 CMSampleBufferRef 转换为 NSData

如何将 Kotlin ByteArray 转换为 NsData,反之亦然

如何以编程方式将 NSData 转换为 NSString? [复制]