사운드 파일 스트리밍 작업

Flash Player 9 이상, Adobe AIR 1.0 이상

사운드 파일이나 비디오 파일의 데이터를 로드하고 있는 중에 먼저 로드된 부분을 재생하는 것을 스트리밍 이라고 합니다. 원격 서버로부터 로드되는 외부 사운드 파일은 스트리밍되는 경우가 많으므로 전체 사운드 데이터의 로드가 완료되지 않아도 사운드를 들을 수 있습니다.

SoundMixer.bufferTime 속성은 사운드 재생 전에 Flash Player 또는 AIR가 수집해야 하는 사운드 데이터의 밀리초를 나타냅니다. 즉, bufferTime 속성이 5000인 경우 Flash Player 또는 AIR가 사운드 파일로부터 최소한 5000밀리초 상당의 데이터를 로드해야 사운드 재생을 시작할 수 있습니다. 기본 SoundMixer.bufferTime 값은 1000입니다.

응용 프로그램은 사운드를 로드할 때 새로운 bufferTime 값을 명시적으로 지정하여 개별 사운드에 대한 전역 SoundMixer.bufferTime 값을 재정의할 수 있습니다. 기본 버퍼링 시간을 재정의하려면 아래와 같이 먼저 SoundLoaderContext 클래스의 새 인스턴스를 만들고 해당 bufferTime 속성을 설정하여 Sound.load() 메서드에 매개 변수로 전달합니다.

import flash.media.Sound; 
import flash.media.SoundLoaderContext; 
import flash.net.URLRequest; 
 
var s:Sound = new Sound(); 
var req:URLRequest = new URLRequest("bigSound.mp3"); 
var context:SoundLoaderContext = new SoundLoaderContext(8000, true); 
s.load(req, context); 
s.play();

재생을 계속하는 동안 Flash Player 및 AIR는 사운드 버퍼 크기를 동일 수준 이상으로 유지하려고 합니다. 사운드 데이터가 재생 속도보다 빠르게 로드되면 재생은 중단 없이 계속됩니다. 하지만 네트워크 제한으로 인해 데이터 로드 속도가 저하되는 경우 재생 헤드가 사운드 버퍼의 끝에 도달할 수 있습니다. 이렇게 되면 재생이 일시 중단되지만 추가 사운드 데이터가 로드되면 재생이 자동으로 다시 시작됩니다.

Flash Player 또는 AIR가 데이터 로드를 대기하느라 재생이 일시 중단되었는지 확인하려면 Sound.isBuffering 속성을 사용합니다.