2009-10-25 4 views
0

두 파일의 원시 오디오 바이트를 새 wav 파일에 쓰고 두 파일을 결합합니다. 생성 된 결과 파일에는 두 오디오 클립의 내용이 있지만 파일에도 많은 노이즈가 있습니다.iPhone - 오디오 파일의 잡음이 많습니다.

원시 오디오 바이트를 파일에 쓰는 방법을 보여주는 좋은 예를 누군가에게 알려줄 수 있습니까? 다음은 내가 따르는 기본 논리입니다.

SInt32 leftSample1 = ReadSampleFromFile1(music_iter1); 
leftSample1 = (SInt32)((float) leftSample1 * 0.7071); //to avoid clipping 

SInt32 leftStereoSample2 = ReadLeftSample(music_iter2); 
leftStereoSample2 += leftSample1; 
if (leftStereoSample2 > 32767) 
leftStereoSample2 = 32767; 
else if (leftStereoSample2 < -32768 
leftStereoSample2 = -32768; 
// write leftStereoSample2 to the file 
//do the same as left sample to right sample also 

++music_iter2; 
++music_iter1; 

고마워요.

+0

.wav 파일을 기록 했으므로 .wav 파일에서 배경 잡음을 제거하고 싶습니다. 어떻게 할 수 있습니까? 제발 도와주세요 .. 1 주일 동안 고생하고 있어요. – Warrior

+0

배경 잡음을 제거하고 싶지 않습니다. iPhone에서 잡음 제거를 비활성화 할 수 있습니까? –

답변

1

얼마나 많은 시간이 사실입니까? 당신이 클리핑되지해서

if (leftStereoSample2 > 32767) 
leftStereoSample2 = 32767; 
else if (leftStereoSample2 < -32768 
leftStereoSample2 = -32768; 

(당신이 그것을 강요하기 때문에하지에) 당신이 그런 파도를 절단 할 때 늘 유물 (왜곡) 등을 얻을 것을 의미하지 않는다. 얼마나 자주 그런 일이 있었는지 알 것입니다.

코어 오디오에는 믹서가 있습니다. 똑똑한 사람들은 이미 이런 종류의 것들을 다룰 수있는 코드를 작성해 왔습니다. 그래서 우리는 할 필요가 없습니다 :) MultiChannelMixer는 스테레오 믹싱을하는 것입니다. 확인 해봐.

0

65535 및 -65536 테스트가 잘못되었습니다 (17 비트 필요). 32767 및 -32768을 시도하십시오.

+0

그래. 여전히 같은 결과를 얻고 있습니다. 다른 아이디어? 감사합니다 – lostInTransit

+0

질문 편집 중입니다. 나는 아직도 소리가 난다. – lostInTransit

0

"클리핑 방지"코드 줄이 실제로 그 일을하고 있는지 확실하지 않습니다. 그들을 결합하기 전에 모두 스트림을 효과적으로 거절 할 필요가 없습니까?

훨씬 더 조용한 두 개의 파일을 결합 해보십시오. 두 파일 모두 0.7071 대신 0.5를 사용하십시오. 또는 Aran이 제안한 것처럼 MultiChannelMixer를 사용하십시오.

관련 문제