测试已测试 | ✓ |
Lang语言 | Obj-CObjective C |
许可证 | MIT |
发布最后发布 | 2016年7月 |
SPM支持 SPM | ✓ |
由 Drew Pitchford 维护。
NDAudioSuite 是一个易于安装和使用的 iOS 音频文件流引擎。它还包括一个轻量级的文件下载 API,帮助管理 iOS 设备上的文件。
NDAudioSuite 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中:
pod 'NDAudioSuite'
如果您想测试 NDAudioSuite 的 beta 版本,可以安装最新的 develop 版本。
pod 'NDAudioSuite', :git => 'https://github.com/metova/NDAudioSuite.git', :branch => 'develop'
NDAudioPlayer 有 4 个可选代理方法,您可以使用它们将音频流集成到您的应用程序中。它们是:
- (void) NDAudioPlayerIsReady: (NDAudioPlayer * _Nonnull)sender
此方法通知代理内部 AVPlayer 已经准备好。通常,您可能不需要实现这个方法。然而,在某些情况下,您可能希望知道 AVPlayer 是否已经准备好开始播放音频。
- (void) NDAudioPlayerPlaylistIsDone: (NDAudioPlayer * _Nonnull)sender
顾名思义,该方法在您提供的播放列表播放完毕时被调用。
- (void) NDAudioPlayerTrackIsDone: (NDAudioPlayer * _Nonnull)sender nextTrackIndex:(NSInteger)index
该方法在 NDAudioPlayer 播放当前曲目完毕时调用。nextTrackIndex 参数告诉您播放列表正在播放哪个索引的曲目。
- (void) NDAudioPlayerTimeIsUpdated: (NDAudioPlayer * _Nonnull)sender withCurrentTime:(CGFloat)currentTime
此方法以您所需的频率调用(默认为每 1 秒调用一次)。您可以通过设置 NDAudioSuite 上的 timeScale
属性来更改频率(其中 '1' = 1 秒)。通常,这可以用来更新音频曲目进度。
为了播放您的音频,您需要做以下两件事:
首先,创建一个 NDAudioSuite 的实例。
Objective-C
NDAudioSuite myPlayer = [NDAudioSuite new];
Swift
let myPlayer = NDAudioSuite()
其次,调用 prepareToPlay:atIndex:atVolume
方法,传入您的播放列表、音频开始播放的位置以及您想要播放的音量。
[self.myPlayer prepareToPlay:self.myPlaylist atIndex:index atVolume:volume];
myPlayer.prepareToPlay(myPlaylist, atIndex: index, atVolume:volume)
注意:您还可以通过将属性audioSessionCategory
设置为所选择的音频会话类别来配置音频会话类型。默认值是AVAudioSessionCategoryPlayAndRecord
。
正如您所预期的,有4种方法允许您播放、暂停、恢复和停止音频
- (void)playAudio
- (void)pauseAudio
- (void)resumeAudio
- (void)stopAudio
还有方法可以切换随机播放,跳过下一曲目和上一个曲目
- (void) shuffleTracks:(BOOL)enable
- (NSInteger) skipTrack
- (NSInteger) previousTrack
如果您需要当前(播放)曲目的索引,可以使用
- (NSInteger)getCurrentTrackIndex
在初始设置之后,您可以使用以下方法来设置音频音量
- (void) setAudioVolume:(CGFloat)newVolume
您可以使用以下方法获取当前音量
- (CGFloat)getAudioVolume
您还可以获取当前曲目的总时长
- (CGFloat) getTotalDuration
可以使用您设置的间隔来衰减音量
- (void)fadeOutWithIntervals:(CGFloat)interval
没有音频播放器组件会不提供音频回退和快进的功能。NDAudioSuite在这方面为您提供全面支持!
- (void)fastForwardToTime:(CGFloat)time
- (void)rewindToTime:(CGFloat) time
注意:使用FF/RW方法与audioTimeIsUpdated:withCurrentTime:
结合使用,以在您所需的任何间隔向前和向后移动。
最后,您始终可以为您NDAudioSuite对象设置一个新的播放列表。
- (void)setPlaylistToArray:(NSMutableArray * _Nonnull)newPlaylist
NDAudioDownloadManager只有一个代理方法,在文件下载完成后通知您。它在调用downloadFileFromURL:withName:andExtension:completion
时被调用相同的次数。
- (void) NDAudioDownloadManager:(NDAudioDownloadManager *_Nonnull)sender currentDownloadIsCompleteWithRemainingDownloads:(NSUInteger)count
NDAudioDownloadManager有4个方法可以帮助您管理文件下载;上面提到的downloadFileFromURL:withName:andExtension:completion
以及另外两个
- (NSURL *__nullable)getDownloadedFileFromDiskWithName:(NSString *_Nonnull)fileToBePlayed andExtension:(NSString *_Nonnull)extension
- (NSArray *__nullable)getAllDownloadedFilesFromDiskWithExtension:(NSString *_Nonnull)extension
- (void)deleteFromDiskFileWithURL:(NSURL *_Nonnull)url
方法名称解释自明。对于Swift,上面的两个非void方法都返回一个Optional。
NDAudioDownloadManager还有两个方法可以帮助您从文件名中获取和删除扩展名
- (NSString *_Nonnull)getExtensionFromFile:(NSString *_Nonnull)fileNameWithExtension
- (NSString *_Nonnull)removeExtensionFromFile:(NSString *_Nonnull)fileName
NDAudioSuite由Metova Inc.拥有和维护
如果您想为NDAudioSuite做出贡献,请参阅我们的CONTRIBUTING指南。
NDAudioSuite可在MIT许可下提供。有关更多信息,请参阅LICENSE文件。