저는 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를 사용하고 있다고 생각합니까?