2017-02-11 1 views
0

OfflineContext.suspendOfflineContext.currentTime의 진행을 멈추지 만 렌더링하는 동안 어떤 효과가 있습니까? (OfflineContext.startRendering)? 내가하고 싶은 일은 렌더링 프로세스를 시작하고, 일시 중지하고, 다른 작업을 수행하고, 다른 작업이 완료되면 다시 시작하는 것입니다. 렌더링 프로세스가 일시 중지 된 동안 임박한 AudioBuffer이 커지지 않아야합니다. 즉, AudioBuffer을 wav 파일로 내보내고 재생할 때 렌더링 프로세스에서 일시 중지 된 부분에 대한 무음이 없어야합니다.오프라인 렌더링을 일시 중지하는 방법은 무엇입니까?

나는 렌더링하는 동안 OfflineContext.suspend을 시도했으며, 결과로 나오는 wav 파일에 약간의 침묵을 추가하는 것처럼 보일지 모르지만, 아마도 나는 잘못된 것을하고 있습니다.

  1. 어떻게 렌더링 프로세스를 일시 중지 할 수 있습니까?
  2. OfflineContext.suspend은 무엇인가요?

답변

0

suspendstartRendering()이 호출되기 전에 오프라인 컨텍스트가 제어 된 시간에 중지되도록하기위한 것입니다. 렌더링을 시작한 후 suspend()으로 전화를 걸 수는 있지만, 특히 렌더링이 실시간보다 빠르기 때문에 그다지 정확하지 않습니다.

플러스 렌더링 중에는 AudioBuffer에 액세스 할 수 없습니다. 렌더링 중에 오디오를 캡처하려면 ScriptProcessorNode 또는 AudioWorkletNode을 사용하여 오디오 데이터를 저장하십시오.

+0

그래서 'suspend'는 렌더링을 시작하고, 렌더링을 일시 중지하고, 작업을 수행하고, 오디오에 무음을 추가하지 않고 렌더링을 다시 시작할 수있게합니까? 그렇다면 렌더링을 시작한 후에'suspend'를 호출하기 때문에 아마 오디오에 침묵 할 것입니다. 'startRendering'을 호출 한 후 코드 실행이'suspend'에 도달하는 데 필요한 몇 밀리 초는 1 분간의 침묵을 삽입하기에 충분합니다. – maximedupre

+1

예. 'suspend'와'resume'을 호출해서 당신이해야 할 일을하고 나서'startRendering'을 호출해야합니다. 렌더링하는 동안 컨텍스트는 요청 된 시간에 멈추고 코드를 실행하고 요청 된 경우 다시 시작할 수 있습니다. 주의해야 할 점은 일시 중단 시간이 이전 (?) 128 프레임 경계로 양자화된다는 것입니다. –

관련 문제