2017-02-11 25 views
0

OfflineContext.suspend останавливает прогрессию OfflineContext.currentTime, но какой эффект оказывает при рендеринге (OfflineContext.startRendering)? Я хочу сделать процесс рендеринга, приостановить его, выполнить другую задачу и возобновить ее, когда будет выполнена другая задача. В то время как процесс рендеринга приостанавливается, неизбежный AudioBuffer не должен увеличиваться, а это означает, что при экспорте AudioBuffer в wav-файл и его воспроизведение не должно быть молчания, соответствующего паузе, принятой процессом рендеринга.Как приостановить автономный рендеринг?

Я пробовал OfflineContext.suspend во время рендеринга, и он, кажется, добавляет некоторую тишину в полученный wav-файл, но, возможно, я делаю что-то неправильно.

  1. Как приостановить процесс рендеринга?
  2. Что такое OfflineContext.suspend?

ответ

0

предназначен для остановки автономного контекста в контролируемое время, до того, как вызывается startRendering(). Вы можете позвонить suspend() после начала рендеринга, но это не очень точно, тем более, что рендеринг, вероятно, быстрее, чем в режиме реального времени.

Плюс у вас нет доступа к AudioBuffer во время рендеринга. Если вы хотите захватить аудио во время рендеринга, используйте ScriptProcessorNode или AudioWorkletNode для сохранения аудиоданных.

+0

Так что 'suspend' позволяет мне начинать рендеринг, приостанавливать рендеринг, выполнять некоторую задачу и возобновлять рендеринг без добавления тишины в аудио? Если да, то у меня, вероятно, есть тишина в моем звуке, потому что я вызываю 'suspend' после начала рендеринга. Пара миллисекунд, которую требуется для выполнения кода для достижения 'suspend' после вызова' startRendering', достаточно, чтобы вставить 1 минуту молчания. – maximedupre

+1

Да. Вы должны вызвать 'suspend' и' resume', чтобы сделать все, что вам нужно, а затем вызвать 'startRendering'. Случается, что при рендеринге контекст останавливается в заданное время, запускает код и возобновляет (если требуется) все синхронно. Единственное, о чем нужно быть осторожным, это то, что время приостановки квантуется до предшествующей (?) 128-кадровой границы. –