版本记录
版本号 | 时间 |
---|---|
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
- 这些符号已被弃用,不再推荐使用。
后记
未完,待续~~~