Tag: 音频播放器

使iOS Audio Player变得简单

因为互联网上的点点滴滴令人费解! 任务:创建没有外部库的音频播放器(差不多) 我搜寻了已知的google空间的长度,以查找有关使用Swift和基本功能制作音频播放器的所有可用信息。 简单吧? 事实证明……不多。 大多数StackOverflow(从现在开始为SO)处理过程的一部分,通常分为Obj-C,Swift-2,Swift-3和一小部分Swift-4。 文章还受Swift版本控制的困扰,或者缺少它,并且完全用Obj-C编写。 插件和库也已过时,用Obj-C编写或未维护。 第一个子任务:创建一个AudioQueue并播放一个曲目。 因此,我们开始使用AVFramework创建一个简单的AudioQueue 主要故事任务:建立一个AudioPlayer类 为了做到这一点,我们首先需要做两件事。 如我们所见,为了将项目添加到AVQueuePlayer我们必须将它们转换为AVPlayerItem并且要做到这一点,我们必须首先将它们转换为AVAsset 。 但是这里有个问题, AVAsset在定义AVAsset开始加载,这意味着我们不想立即添加它,因为它AVAsset无法播放,我们需要先加载它,然后将其添加到AVQueuePlayer 。 这里还有第二个陷阱,如果我们按照上面描述的路径进行操作,我们会将异步功能添加到队列中,并且很可能肯定不会以我们希望它们添加的顺序添加内容。 我们做什么? 抢救同步队列! 完成加载后,曲目将被一一添加。 循环每个.mp3 url->使它成为队列中的资产->加载资产(异步)时->将其转换为AVPlayerItem->队列继续下一个.mp3 url 那么什么时候知道所有物品都准备好了呢? 很简单(不是,但是确实如此) 在上面的代码中,我们缺少AVItemPool参考。 这里是: 如果您有任何疑问或更正,请在评论中打上我一行,希望对您有用。 请享用!

后台音频播放器同步控制中心

在本教程中,您将创建一个能够在后台模式下播放音频并与Control Center中的音乐控件同步的播放器。 特征: 播放声音文件。 使声音在后台模式下继续播放。 从控制中心控制音频。 处理完成。 处理中断。 处理路线更改。 如果您遇到任何问题,可以在这里下载完整的源代码项目,然后再使用每个功能。 1.播放声音文件 要播放声音文件,您需要初始化播放器。 阅读以下文章以了解有关AVAudioPlayer的信息: AVAudioPlayer 音频播放器,可播放文件或内存中的音频数据。 将以下块代码添加到视图控制器中以初始化播放器: 您还需要准备一个mp3文件进行测试。 要播放mp3文件,请按如下所示调用play()方法: player.play() 现在,您可以从导入的文件中听到声音。 但是,当您按“主页”按钮将应用程序移至背景模式时,声音已被静音。 因此,我们需要让它在下一指南中继续在后台模式下播放。 2.使声音在后台模式下继续播放 要使声音在后台模式下继续播放,您需要阅读以下文章: AVAudioSession 与系统通信的中介对象,您打算如何在应用程序中使用音频。 启用背景音频 配置您的应用,使其在进入后台时继续播放音频。 如下替换AppDelegate.swift文件的application(_:didFinishLaunchingWithOptions:)方法以配置音频会话: 现在运行该应用程序,播放声音,然后按“主页”按钮将应用程序移至背景模式,并检查声音是否仍继续播放。 3.从控制中心控制音频 阅读以下文章,了解如何从“控制中心”和“ iOS锁定”屏幕控制背景音频: 控制背景音频 支持从控制中心和iOS锁定屏幕控制背景音频。 将以下方法添加到视图控制器中,并从viewDidLoad()方法调用setupRemoteTransportControls() , setupNowPlaying() viewDidLoad()方法: 现在运行该应用程序,打开“控制中心”并进行检查。 4.处理完比赛 音频播放器播放完毕后,您需要更新nowPlayingInfo和UI。 要接收此事件,您需要实现AVAudioPlayerDelegate协议的audioPlayerDidFinishPlaying(_:successfully :)方法,并如下更新setUpPlayer()方法: 运行该应用程序并进行检查。 5.处理中断 在后台模式下播放时,如果打来电话,则声音会静音,但在挂断电话时,声音不会自动继续播放。 因此,我们需要阅读以下文章来处理这些中断事件: 响应音频会话中断 直接观察音频会话通知,以确保您的应用响应中断。 在中断结束时添加以下代码片段以自动播放: 现在运行该应用程序并进行测试。 6.处理路线变更 现在,当您将耳机插入手机时,声音将在耳机上发出。 但是当您拔下耳机插头时,声音会自动继续在内置扬声器上播放。 […]