2012-01-18 2 views
0

캡처 된 마이크 사운드 바이트 배열에 사운드 개체의 바이트 배열을 추가하려고합니다.AS3에서 모노 바이트 배열로 소리 개체를 추출하는 방법

효과는 있지만 추출한 사운드 개체가 아래로 오르고 두 배가됩니다. 나는 마이크 바이트 배열이 모노 인 동안 소리 개체의 바이트 배열이 스테레오이기 때문에 이것이라고 생각합니다.

sound.extract(myByteArray, extract); 

myByteArray 이제 스테레오 데이터를 포함

나는이 있습니다. 이것을 모노로 바꾸려면 어떻게해야합니까? (저는 ByteArrays를 처음 사용했습니다).

는 UPDATE :

가 여기에 작동하는 솔루션입니다 :

existingByte.position = 0; 
var mono : ByteArray = new ByteArray(); 
while(existingByte.bytesAvailable) { 
    var left : Number = existingByte.readFloat(); 
    mono.writeFloat(left); 
    existingByte.position +=4; 
} 

답변

0

그냥 채널 추출 선택하십시오. ByteArray는 모든 홀수 바이트를 왼쪽 채널로 선택하면 모든 짝수 바이트를 선택하면 오른쪽 채널이라고 생각합니다.

var mono : ByteArray = new ByteArray(); 
for(var i : int = 0; i < raw.length; i+=2) { 
    var left : int = raw[i]; 
    var right : int = raw[i+1]; 

    var mixed : int = left * 0.5 + right * 0.5; 
    if(pickLeft) { 
     mono.writeByte(left); 
    } else if(pickRight) { 
     mono.writeByte(right); 
    } else { 
     mono.writeByte(mixed); 
    } 
} 
+0

고맙습니다. 불행히도 내가 사용하고있는 Wave Writer 클래스는 코드를 사용하는 경우 다음 오류를 발생시킵니다. 오류 : 오디오 샘플이 부동 형식이 아닙니다 \t classes :: WAVWriter/processSamples() – shredding

+0

예 "코드"가 올바르지 않습니다. 바이트를 읽는 것은 모든 것이 8 비트임을 의미합니다. 플로트가 16 비트이므로 네가 번갈아 가며 읽는 것이 필요하다. (스트림이 16 비트라면 바이트가 아니다.) 왼쪽 채널이나 오른쪽 채널을 선택하거나 믹싱한다는 생각은 여전히 ​​유효하다. – chubbsondubs

관련 문제