如何在 AVPlayer 中播放 iPod Library 文件
Posted
技术标签:
【中文标题】如何在 AVPlayer 中播放 iPod Library 文件【英文标题】:How to play the iPod Library file in the AVPlayer 【发布时间】:2009-12-23 15:58:45 【问题描述】:如何将 ipod 库音乐文件导入 AVAudioPlayer?
【问题讨论】:
我建议您查看superuser.com,您可能还想提供更多详细信息。你到底在用什么程序,到目前为止你有没有做过任何研究? AVAudioPlayer 是一个用于......好吧......在 iPhone 上播放音频的类。你知道,当你为它编程时。这个问题肯定与编程有关。 【参考方案1】:正如 David 所提到的,还有更多工作要做,例如,您必须管理播放媒体项目集合中的下一首曲目,但这里有一种方法可以使用用户从中选择的一组 MPMediaItems iPod 选择器。 AssetURL 是您使用的,它为您提供 MP3 文件的路径(例如 ipod-library://item/item.mp3?id=-6889145242935454020)
NSURL *anUrl = [[mediaItems objectAtIndex: 0] valueForProperty:MPMediaItemPropertyAssetURL];
self.audioPlayerMusic = [[[AVPlayer alloc] initWithURL:anUrl] retain];
[self.audioPlayerMusic play];
【讨论】:
糟糕,无法播放声音,使用 AVPlayer。需要帮助。 这对于受 DRM 保护的 歌曲(例如来自 Apple Music 订阅的歌曲)或那些离线但在云端不可用的。如果您有兴趣检查音乐是否受 DRM 保护或以正确的方式播放受 DRM 保护的音乐,请在此处阅读我的详细答案:***.com/a/47694472/4331787 感谢您的回复。在这里,您已经解释了如何检测 drm 轨道。请告诉我怎么玩。我正在使用 AVPlayer 但它没有播放。我可以使用 MPMusicPlayer 播放,但我的要求是我需要使用 AVFoundation 播放。【参考方案2】:是的,您可以使用 SDK 播放 iPod 库中的歌曲,而无需借助 MPMusicPlayerController
类。
更基本的AVPlayer
类可以使用歌曲MPMediaItemPropertyAssetURL
属性中的NSUrl
值来处理来自iPod 库的音频文件。您必须做更多的工作才能正确设置所有内容,但这是可以做到的。
【讨论】:
我不知道怎么做,但是使用 AVAplat=yer 是行不通的。【参考方案3】:SDK 没有从 iPod 库中读取文件的规定(您需要这样做才能使用 AVAudioPlayer
),这可能是出于反盗版的原因。要播放 iPod 库项目,请使用 MPMusicPlayerController
类。
编辑:这不再准确。请参阅以下描述 AVPlayer 类使用的答案。
【讨论】:
这不是真的,请参阅记录如何访问 iPod 库以与 AVAudioPlayer 一起使用的其他答案。 这在 09 年 12 月可能是正确的,但正如 Steve Tranby 在他的回答中所解释的那样,现在有可能。【参考方案4】:有没有可能在MPMusicPlayerController
中获得有关 dB 计量的信息?也许启动AVAudiosession
进行并行录制可以完成这项工作?我需要 dB 值来构建某种体积光谱仪。
【讨论】:
2 岁的问题,但我会为其他登陆这里的人添加答案。要从音频中获取 dB 级别,请使用 Core-Audio 的 AudioStreamBasicDescription (developer.apple.com/library/mac/documentation/musicaudio/…) 将音频数据作为流。我将 ipod 库中的 URL 用于资产,并使用带有 core-audio 的 URL 中的数据。 您能否进一步扩展这个答案? @Helium3:您的解决方案是否也适用于受 IOS10 和 DRM 保护的文件?【参考方案5】:- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection
NSURL *url = [[mediaItemCollection.items objectAtIndex:0] valueForProperty:MPMediaItemPropertyAssetURL];
NSError *error;
self.player = [[AVAudioPlayer alloc] url error:&error];
if (!error)
[self.player prepareToPlay];
[self.player play];
[mediaPicker dismissModalViewControllerAnimated:YES];
【讨论】:
以上是关于如何在 AVPlayer 中播放 iPod Library 文件的主要内容,如果未能解决你的问题,请参考以下文章
本地文件使用 AVAudioPlayer 播放,但不使用 AVPlayer?
如何比较 AVPlayer Current Item 和 MPMediaItem?