AVAudioPlayerNode
AVAudioPlayerNode
класс играет буферы или сегменты аудиофайлов.
AVAudioPlayerNode
поддержки планируя воспроизведение AVAudioBuffer
экземпляры или сегменты аудиофайлов открылись через AVAudioFile
. Буферы и сегменты могут быть запланированы в отдельных моментах своевременно, или сразу играть после предыдущих сегментов.
Обычно, Вы захотите сконфигурировать выходной формат узла с тем же числом каналов, как находятся в файлах и буферах, которые будут играться. Иначе, каналы будут отброшены или добавлены как требуется. Обычно лучше использовать AVAudioMixerNode
сделать это.
Точно так же при игре сегментов файла, узел будет частота дискретизации преобразовывать при необходимости, но часто предпочтительно сконфигурировать выходную частоту дискретизации узла, чтобы соответствовать тот из файла (ов) и использовать микшер для выполнения преобразования уровня.
При игре буферов существует неявное предположение, что буферы в той же частоте дискретизации как выходной формат узла.
Этот класс переопределяет AVAudioNode
метод reset
и нерасписания все ранее запланированные буферы и сегменты файла, и также возвращают временную шкалу проигрывателя демонстрационному времени 0
.
Временная шкала проигрывателя
Обычное AVAudioNode
демонстрационные времена (как наблюдается lastRenderTime
) имейте произвольную нулевую точку. AVAudioPlayerNode
накладывает вторую “временную шкалу проигрывателя” поверх этого, для отражения, когда проигрыватель был запущен, и интервалы, во время которых он был приостановлен. Методы nodeTimeForPlayerTime:
и playerTimeForNodeTime:
преобразуйте между двумя.
Планирование времени воспроизведения
scheduleBuffer:atTime:options:completionHandler:
, scheduleFile:atTime:completionHandler:
, и scheduleSegment:startingFrame:frameCount:atTime:completionHandler:
методы берут AVAudioTime
when
параметр. Это интерпретируется следующим образом:
Если
when
параметрnil
:Если были предыдущие команды, новый сразу играется после последнего.
Иначе, если узел играет, событие играется в самом ближайшем будущем.
Иначе, команда играется в демонстрационное время
0
.
Если
when
параметр является демонстрационным временем, параметр интерпретируется как таковой.Если
when
параметр является временем узла, он проигнорирован если демонстрационное время, не допустимое.
Методы планирования перестанут работать если:
Количество каналов буфера не соответствует количество каналов выходного формата узла.
К файлу нельзя получить доступ.
AVAudioTime
не указывает ни одного допустимое демонстрационное время или время узла.Кадр запуска сегмента или количество кадра отрицательны.
Соответствует
-
AVAudio3DMixing
-
AVAudioMixing
-
AVAudioStereoMixing
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSObjectProtocol
-
Печатаемый
-
AVAudioMixing
-
NSObject
Оператор импорта
Swift
import AVFoundation
Objective C
@import AVFoundation;
Доступность
Доступный в OS X v10.10 и позже.
-
scheduleBuffer (_: atTime:options:completionHandler:) - scheduleBuffer:atTime:options:completionHandler:
Расписание играя выборки от аудио буфера в требуемое время и с указанными опциями воспроизведения.
Объявление
Swift
func scheduleBuffer(_
buffer
: AVAudioPCMBuffer!, atTimewhen
: AVAudioTime!, optionsoptions
: AVAudioPlayerNodeBufferOptions, completionHandlercompletionHandler
: AVAudioNodeCompletionHandler!)Objective C
- (void)scheduleBuffer:(AVAudioPCMBuffer *)
buffer
atTime:(AVAudioTime *)when
options:(AVAudioPlayerNodeBufferOptions)options
completionHandler:(AVAudioNodeCompletionHandler)completionHandler
Параметры
buffer
Буфер для игры.
when
Время, в которое можно играть буфер. Посмотрите
Scheduling Playback Time
для получения дополнительной информации.options
Опции воспроизведения. Посмотрите
AVAudioPlayerNodeBufferOptions
для возможных значений.completionHandler
Вызванный после того, как буфер полностью играл, или проигрыватель останавливается. Может быть
nil
.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.10 и позже.
-
Расписание играя выборки от аудио буфера.
Объявление
Swift
func scheduleBuffer(_
buffer
: AVAudioPCMBuffer!, completionHandlercompletionHandler
: AVAudioNodeCompletionHandler!)Objective C
- (void)scheduleBuffer:(AVAudioPCMBuffer *)
buffer
completionHandler:(AVAudioNodeCompletionHandler)completionHandler
Параметры
buffer
Буфер для игры.
completionHandler
Вызванный после того, как буфер полностью играл, или проигрыватель останавливается. Может быть
nil
.Обсуждение
Планирует буфер, который будет играться после любых ранее запланированных команд.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.10 и позже.
-
Игра расписания всего аудиофайла.
Объявление
Swift
func scheduleFile(_
file
: AVAudioFile!, atTimewhen
: AVAudioTime!, completionHandlercompletionHandler
: AVAudioNodeCompletionHandler!)Objective C
- (void)scheduleFile:(AVAudioFile *)
file
atTime:(AVAudioTime *)when
completionHandler:(AVAudioNodeCompletionHandler)completionHandler
Параметры
file
URL файла для игры.
when
Время, в которое можно играть буфер. Посмотрите
Scheduling Playback Time
для получения дополнительной информации.completionHandler
Вызванный после того, как буфер полностью играл, или проигрыватель останавливается. Может быть
nil
.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.10 и позже.
-
scheduleSegment (_: startingFrame:frameCount:atTime:completionHandler:) - scheduleSegment:startingFrame:frameCount:atTime:completionHandler:
Расписание играя сегмент аудиофайла.
Объявление
Swift
func scheduleSegment(_
file
: AVAudioFile!, startingFramestartFrame
: AVAudioFramePosition, frameCountnumberFrames
: AVAudioFrameCount, atTimewhen
: AVAudioTime!, completionHandlercompletionHandler
: AVAudioNodeCompletionHandler!)Objective C
- (void)scheduleSegment:(AVAudioFile *)
file
startingFrame:(AVAudioFramePosition)startFrame
frameCount:(AVAudioFrameCount)numberFrames
atTime:(AVAudioTime *)when
completionHandler:(AVAudioNodeCompletionHandler)completionHandler
Параметры
file
URL файла для игры.
startFrame
Позиция начального кадра в потоке.
numberFrames
Число кадров для игры.
when
Время, в которое можно играть буфер. Посмотрите
Scheduling Playback Time
для получения дополнительной информации.completionHandler
Вызванный после того, как буфер полностью играл, или проигрыватель останавливается. Может быть
nil
.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.10 и позже.
-
Преобразуйте со времени проигрывателя до времени узла.
Объявление
Swift
func nodeTimeForPlayerTime(_
playerTime
: AVAudioTime!) -> AVAudioTime!Objective C
- (AVAudioTime *)nodeTimeForPlayerTime:(AVAudioTime *)
playerTime
Параметры
playerTime
Время относительно времени начала проигрывателя.
Возвращаемое значение
Время узла.
Обсуждение
Этот метод и его инверсия
playerTimeForNodeTime:
обсуждены вThe Player Timeline
. Когда этот метод вызывают, если не играет проигрывательnil
возвращается.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.10 и позже.
-
Преобразуйте со времени узла до времени проигрывателя.
Объявление
Swift
func playerTimeForNodeTime(_
nodeTime
: AVAudioTime!) -> AVAudioTime!Objective C
- (AVAudioTime *)playerTimeForNodeTime:(AVAudioTime *)
nodeTime
Параметры
nodeTime
Время узла.
Возвращаемое значение
Время относительно времени начала проигрывателя.
Обсуждение
Этот метод и его инверсия
nodeTimeForPlayerTime:
обсуждены вThe Player Timeline
. Когда этот метод вызывают, если не играет проигрывательnil
возвращается.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.10 и позже.
-
Подготавливает ранее запланированные области файла или буферы для воспроизведения.
Объявление
Swift
func prepareWithFrameCount(_
frameCount
: AVAudioFrameCount)Objective C
- (void)prepareWithFrameCount:(AVAudioFrameCount)
frameCount
Параметры
frameCount
Число демонстрационных кадров данных, которые будут подготовлены перед возвратом.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.10 и позже.
См. также
-
Запустите или возобновите воспроизведение сразу.
Объявление
Swift
func play()
Objective C
- (void)play
Обсуждение
Это эквивалентно
playAtTime:
со значениемnil
.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.10 и позже.
См. также
-
Запустите или возобновите воспроизведение в определенное время.
Объявление
Swift
func playAtTime(_
when
: AVAudioTime!)Objective C
- (void)playAtTime:(AVAudioTime *)
when
Параметры
when
Время узла, в которое можно запустить или возобновить воспроизведение. Передача
nil
сразу запускает воспроизведение.Обсуждение
Этот узел первоначально приостанавливается. Запросы для игры буферов или сегментов файла ставятся в очередь, и любое необходимое декодирование сразу начинается. Воспроизведение не начинается, однако, пока проигрыватель не начал играть через этот метод.
Запустить проигрыватель
0.5
секунды в будущем:// start engine and player
NSError *nsErr = nil;
[_engine startAndReturnError:&nsErr];
if (!nsErr) {
const float kStartDelayTime = 0.5; // sec
AVAudioFormat *outputFormat = [_player outputFormatForBus:0];
AVAudioFramePosition startSampleTime = _player.lastRenderTime.sampleTime + kStartDelayTime * outputFormat.sampleRate;
AVAudioTime *startTime = [AVAudioTime timeWithSampleTime:startSampleTime atRate:outputFormat.sampleRate];
[_player playAtTime:startTime];
}
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.10 и позже.
См. также
-
Указывает, играет ли проигрыватель. (только для чтения)
Объявление
Swift
var playing: Bool { get }
Objective C
@property(nonatomic, readonly, getter=isPlaying) BOOL playing
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.10 и позже.
-
Воспроизведение паузы.
Объявление
Swift
func pause()
Objective C
- (void)pause
Обсуждение
В то время как узел приостанавливается, демонстрационное время проигрывателя не совершенствуется.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.10 и позже.
См. также
-
Очистите все ранее запланированные события узла и воспроизведение остановки.
Объявление
Swift
func stop()
Objective C
- (void)stop
Обсуждение
Все ранее запланированные события узла очищены, включая любого, которые являются посреди игры. Демонстрационное время узла (и поэтому времена, к которым должны быть запланированы новые события) сбрасываются к
0
, и не продолжится, пока узел не запускается снова путем отправки aplay
илиplayAtTime:
сообщение.Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.10 и позже.
См. также
-
Опции, управляющие буферным планированием.
Объявление
Swift
struct AVAudioPlayerNodeBufferOptions : RawOptionSetType { init(_
rawValue
: UInt) init(rawValuerawValue
: UInt) static var Loops: AVAudioPlayerNodeBufferOptions { get } static var Interrupts: AVAudioPlayerNodeBufferOptions { get } static var InterruptsAtLoop: AVAudioPlayerNodeBufferOptions { get } }Objective C
enum { AVAudioPlayerNodeBufferLoops = 1UL << 0, AVAudioPlayerNodeBufferInterrupts = 1UL << 1, AVAudioPlayerNodeBufferInterruptsAtLoop = 1UL << 2 }; typedef NSUInteger AVAudioPlayerNodeBufferOptions;
Константы
-
Loops
AVAudioPlayerNodeBufferLoops
Буферные циклы неопределенно.
Доступный в OS X v10.10 и позже.
-
Interrupts
AVAudioPlayerNodeBufferInterrupts
Буфер, уже прерывает любой буфер играя.
Доступный в OS X v10.10 и позже.
-
InterruptsAtLoop
AVAudioPlayerNodeBufferInterruptsAtLoop
Буфер, уже прерывает любой буфер играя в его точке цикла.
Доступный в OS X v10.10 и позже.
Оператор импорта
Objective C
@import AVFoundation;
Swift
import AVFoundation
Доступность
Доступный в OS X v10.10 и позже.
-