2011-11-18 3 views
1

저는 RAW PCM 오디오 데이터를 재생할 때 Flash의 기능을 많이 조사했습니다. ByteArray로 RAW PCM 오디오가 있기 때문에 실제로 플래시를 재생할 수 있을지 생각하고 있습니다. 일부 기사에 따르면 네, 아니요, 아니요, RAW PCM 오디오가 라이브 소켓 스트림에서 온다는 것에 유의하십시오.플래시를 사용하여 라이브 소켓 스트림의 PCM 원시 데이터 재생

지금까지 시도한 것은 비어있는 Sound 객체를 만든 다음 그 play 메서드를 호출하는 것입니다. 다음의 SampleDataEvent.SAMPLE_DATA 이벤트를 처리하고 일부 코드 조각 아래, 거기에서 바이트를 전달합니다 꽤 많은 (그래서 정적 소리를들을 수있어이 작업을 수행하여

sound = new Sound(); 
sound.addEventListener(SampleDataEvent.SAMPLE_DATA, sampleDataHandler); 
.... 
pa.readBytes(soundBA, soundBA.length); 
if (soundBA.bytesAvailable >= (8192 * 4)) 
{ 
    sound.play(); 
} 
.... 
private function sampleDataHandler(event:SampleDataEvent):void { 

    var i:int; 
    for (i = 0; i < 8192 && soundBA.bytesAvailable > 0; i++) 
    { 
     var sample:Number = soundBA.readFloat(); 
     event.data.writeFloat(sample); 
     event.data.writeFloat(sample); 
    } 
} 

모든 NOISE) 특정 간격으로 당신이 볼 수 있듯이이 체크가 soundBA.bytesAvailable >= (8192 * 4)이므로 충분한 데이터가 있으면 재생 방법이 시작됩니다.

이제 내 질문에이 소리 (들리는 잡음)는 Flash가 PCM 오디오를 재생할 수 있다는 의미입니까? 아니면 그냥 재생할 수 없으므로 잡음 만들을 수 있다는 뜻입니까?

===== 편집 ======는

난 그냥 처리 해요 오디오 샘플 당 16 비트를 가지고 있음을 발견하고 그래서 soundBA.bytesAvailable >= (8192 * 2 * channels)를 수행하여 코드를 조금 조정하고, 또한 I 내 event.data.writeFloat(sample) 호출 범위의 값으로 -1에서 +1로를 통과해야했지만 여전히 소리가 Flash 사운드 객체의 샘플링 속도 (Hz에서)를 설정하는 방법은 없나요

마구 아직? 아니면 항상 44100Hz를 사용하고 있다고 생각합니까?

답변

0

기본값은 44kHz입니다. 그러나 Flash Professional (CS5 있음)에서이를 변경할 수 있습니다.

라이브러리에서 샘플링 속도를 변경하려는 사운드 파일을 마우스 오른쪽 버튼으로 클릭합니다. 옵션 탭에서 "압축"을 "기본값"에서 다른 형식으로 변경하십시오 (mp3에는 샘플링 속도 옵션이 없지만 다른 것은 수행). 여기에서 샘플링 속도를 변경할 수 있습니다. "확인"을 클릭하여 저장하십시오.

코드 내 방법은 방법이 있는지 모르겠습니다. 다른 사람이 코드에서이를 수행하는 방법을 알고 있다면 게시하십시오.

관련 문제