几种播放音频文件的方式(九) —— Media Player框架之基本概览(一)

版本记录

版本号 时间
V1.0 2017.12.28

前言

ios系统中有很多方式可以播放音频文件,这里我们就详细的说明下播放音乐文件的原理和实例。感兴趣的可以看我写的上面几篇。
1. 几种播放音频文件的方式(一) —— 播放本地音乐
2. 几种播放音频文件的方式(二) —— 音效播放
3. 几种播放音频文件的方式(三) —— 网络音乐播放
4. 几种播放音频文件的方式(四) —— 音频队列服务(Audio Queue Services)(一)
5. 几种播放音频文件的方式(五) —— 音频队列服务(Audio Queue Services)简介(二)
6. 几种播放音频文件的方式(六) —— 音频队列服务(Audio Queue Services)之关于音频队列(三)
7. 几种播放音频文件的方式(七) —— 音频队列服务(Audio Queue Services)之录制音频(四)
8. 几种播放音频文件的方式(八) —— 音频队列服务(Audio Queue Services)之播放音频(五)

框架基本

Media Player框架也可以播放声音文件。添加从您的应用程序中查找和播放歌曲,音频播客,音频书籍等功能。

使用之前要引入框架文件

#import <MediaPlayer/MediaPlayer.h>  

1. Overview

媒体播放器框架为开发者提供了几种播放媒体的方式。 内置的音乐播放器提供了一种访问和播放应用中用户音乐库音频的简单方法。 外部音乐播放器也可以从用户的音乐库中检索和播放媒体项目。 要使用户能够播放包含MPMediaItem对象的视频,请使用AVPlayer。 您无法使用Media Player框架播放视频媒体项目。

重要:从iOS 10开始,访问用户的媒体库需要用户的同意。 添加Privacy - Media Library Usage Description密钥和应用Info.plist文件的密钥说明。 如果该键未添加到项目中,您的应用程序将崩溃。

使用其中一个内置音乐播放器,使用户能够从您的应用程序的音乐库中播放选择的音频。 例如,您可以让用户在尝试完成特定游戏级别时从应用内播放自己的音乐。

加入MusicKit,允许用户从您的应用程序和游戏中本地播放Apple Music及其本地音乐库。 用户向其Apple Music帐户提供权限后,您的应用可以创建播放列表,将歌曲添加到其音乐库,并播放Apple音乐目录中的数百万首歌曲。 如果您的应用检测到该用户还不是Apple Music成员,则可以在您的应用内提供试用。

您可以将两种类型的内置媒体播放器中的一种整合到您的应用中,具体取决于您的目标。 如果您希望在应用中进行的更改也影响Music应用,请使用系统播放器。 如果您想在播放音频时按原样离开音乐应用程序,请使用应用程序播放器。 在决定播放器之后,使用媒体查询media queries来检索将填充播放器的媒体项目。

2. API

下面我们看一下该框架的API

#import <MediaPlayer/MediaPlayerDefines.h>
#import <TargetConditionals.h>

#if TARGET_OS_IPHONE
#import <MediaPlayer/MPMediaItemCollection.h>
#import <MediaPlayer/MPMediaLibrary.h>
#import <MediaPlayer/MPMediaPickerController.h>
#import <MediaPlayer/MPMediaPlaylist.h>
#import <MediaPlayer/MPMediaQuery.h>
#import <MediaPlayer/MPMediaQuerySection.h>
#import <MediaPlayer/MPMoviePlayerController.h>
#import <MediaPlayer/MPMoviePlayerViewController.h>
#import <MediaPlayer/MPMusicPlayerApplicationController.h>
#import <MediaPlayer/MPMusicPlayerController.h>
#import <MediaPlayer/MPMusicPlayerQueueDescriptor.h>
#import <MediaPlayer/MPPlayableContentDataSource.h>
#import <MediaPlayer/MPPlayableContentDelegate.h>
#import <MediaPlayer/MPPlayableContentManager.h>
#import <MediaPlayer/MPPlayableContentManagerContext.h>
#import <MediaPlayer/MPVolumeSettings.h>
#import <MediaPlayer/MPVolumeView.h>
#import <MediaPlayer/NSUserActivity+MediaPlayerAdditions.h>
#endif

#import <MediaPlayer/AVFoundation+MPNowPlayingInfoLanguageOptionAdditions.h>
#import <MediaPlayer/MPContentItem.h>
#import <MediaPlayer/MPError.h>
#import <MediaPlayer/MPMediaItem.h>
#import <MediaPlayer/MPNowPlayingInfoCenter.h>
#import <MediaPlayer/MPNowPlayingInfoLanguageOption.h>
#import <MediaPlayer/MPRemoteCommand.h>
#import <MediaPlayer/MPRemoteCommandCenter.h>
#import <MediaPlayer/MPRemoteCommandEvent.h>
#import <MediaPlayer/MPRemoteControlTypes.h>

框架结构

下面我们先看一下框架基本结构。

下面我们就看一下这个框架的详细结构。

1. Built-In Music Playback

  • Playing Audio Using the Built-In Music Player

    • 在应用程序内部创建媒体播放器,以播放用户媒体库中的音频。
  • MPMusicPlayerController

    • 用于播放设备Music 应用程序库中的音频媒体项目的对象。
  • MPMediaPlayback

    • 定义控制音频媒体回调接口的协议。
  • MPSystemMusicPlayerController

    • 在Music 应用程序中播放视频的协议。

2. Media Library Synchronization

  • MPMediaLibrary
    • 表示设备上已同步媒体项目状态的对象。

3. Media Item Queries

  • Using Filters to Create Specialized Queries

    • 在填充音乐播放器队列之前,将查询过滤器添加到查询中。
  • MPMediaQuery

    • 通过过滤器和分组类型指定来自设备媒体库的一组媒体项目的查询。
  • MPMediaQuerySection

    • 媒体查询中的一系列媒体项目或媒体项目集合。
  • MPMediaPropertyPredicate

    • 一组谓词,用于定义媒体查询中使用的过滤器。
  • MPMediaPredicate

    • 定义在媒体查询中过滤媒体的类的抽象类。

4. Media Player Queues

  • MPMusicPlayerControllerQueue

    • 包含要由应用程序队列媒体播放器播放的媒体项目的不可变队列。
  • MPMusicPlayerControllerMutableQueue

    • 包含媒体播放器要播放的媒体项目的可变队列。
  • MPMusicPlayerApplicationController

    • 媒体播放器对象,用于修改当前正在播放的队列。
  • MPMusicPlayerMediaItemQueueDescriptor

    • 用于修改播放器的媒体队列中的音频媒体项目的一组属性和方法。
  • MPMusicPlayerStoreQueueDescriptor

    • 一组属性和方法,用于根据播放器队列中的存储标识符修改项目。
  • MPMusicPlayerPlayParametersQueueDescriptor

    • 基于MusicKit API结果返回的播放参数,用于修改项目播放方式的一组属性和方法。
  • MPMusicPlayerQueueDescriptor

    • 音频媒体项目和存储队列描述符的抽象基类。

5. Media Items and Playlists

  • MPMediaItem

    • 表示媒体库中包含的单个项目的属性集合。
  • MPMediaItemArtwork

    • 与媒体项目相关联的图形图像,例如音乐专辑封面。
  • MPMediaItemCollection

    • 来自媒体库的有序媒体项目集。
  • MPMediaPlaylist

    • 可播放的相关媒体项目集合。
  • MPMediaPlaylistCreationMetadata

    • 播放列表首次创建时用于描述播放列表的一组属性。
  • MPMediaEntity

    • 媒体项目,媒体项目集合和媒体播放列表实例的抽象超类。

6. Media Player User Interface

  • Adding Individual Media Items Using a Media Picker

    • 将媒体选择器添加到您的应用中,以允许用户挑选单个音乐项目。
  • MPMediaPickerController

    • 提供用于选择媒体项目的图形界面的专用视图控制器。
  • MPVolumeView

    • 用于设置系统音频输出音量的滑块控件,以及用于选择音频输出路径的按钮。
  • Global Volume Setting Methods

    • 用于设置音量警报窗口状态的全局函数。

7. Now Playing Information

提供有关当前曲目的信息。

  • MPNowPlayingInfoCenter

    • 一个对象,用于设置您的应用程序正在播放媒体的即时播放信息。
  • MPNowPlayingInfoLanguageOption

    • 一组用于为正在播放的项目设置语言选项的接口。
  • MPNowPlayingInfoLanguageOptionGroup

    • 一组语言选项,一次只能激活一种语言选项。
  • Language Option Characteristic Constants

    • 常量用于定义语言特性。

8. External Player and System Event Handling

支持外部媒体播放器或系统显示的控件的播放控制。

  • Handling External Player Events Notifications

    • 处理外部媒体播放器的事件。
  • Remote Command Center Events

    • 设置远程指挥中心来处理媒体播放器事件。
  • Track Navigation Events

    • 响应请求以更改媒体项目的部分播放。
  • Media Playback Mode Events

    • 回应媒体项目播放方式的变化。
  • Feedback and Rating Events

    • 响应即将到来的反馈和评级事件

9. External Media Player Items

提供内容和与外部媒体播放器进行交互的接口

  • MPContentItem

    • 包含显示给用户的特定媒体项目信息的对象。
  • MPPlayableContentManager

    • 共享内容管理器,用于控制你的媒体app与系统提供的或外部媒体播放器界面之间的接口。
  • MPPlayableContentManagerContext

    • 表示可播放端点当前状态的对象。

10. Errors

  • MPErrorCode

    • 媒体播放器错误域的错误代码。
  • MPErrorDomain

    • 媒体播放器框架错误域。

11. Deprecated

  • Deprecated Symbols
    • 这些符号已被弃用,不再推荐使用。

后记

未完,待续~~~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容