【问题标题】:How to play the iPod Library file in the AVPlayer如何在 AVPlayer 中播放 iPod Library 文件
【发布时间】:2009-12-23 15:58:45
【问题描述】:

如何将 ipod 库音乐文件导入 AVAudioPlayer?

【问题讨论】:

  • 我建议您查看superuser.com,您可能还想提供更多详细信息。你到底在用什么程序,到目前为止你有没有做过任何研究?
  • AVAudioPlayer 是一个用于......好吧......在 iPhone 上播放音频的类。你知道,当你为它编程时。这个问题肯定与编程有关。

标签: iphone avaudioplayer mpmusicplayercontroller


【解决方案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 保护的音乐,请在此处阅读我的详细答案:stackoverflow.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];
}

【讨论】:

    猜你喜欢
    • 2015-10-20
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    相关资源
    最近更新 更多