문제

두 파일의 RAW 오디오 바이트를 새 WAV 파일로 작성하여 두 파일을 결합합니다. 생성 된 결과 파일에는 오디오 클립의 내용이 있지만 파일에도 많은 노이즈가 있습니다.

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

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;

감사.

도움이 되었습니까?

해결책

이 돌아 오는 것은 몇 번이나 사실입니까?

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

당신이 클리핑을하지 않기 때문에 (당신이 그것을 강요하지 않기 때문에) 그런 파도를 잘라낼 때 아티팩트 (왜곡) 등을 얻지 못한다는 것을 의미하지는 않습니다. 나는 그것이 얼마나 자주 일어나고 있는지 볼 것입니다.

핵심 오디오에는 믹서가 있습니다. 똑똑한 사람들은 이미 이런 종류의 것들을 다루기 위해 코드를 작성 했으므로 우리는 할 필요가 없습니다. 확인 해봐.

다른 팁

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

"클리핑을 방지하는"코드 라인이 실제로 작업을 수행하고 있는지 확실하지 않습니다. 효과적으로 거절 할 필요가 없을 것입니다 둘 다 가입하기 전에 스트림?

훨씬 더 조용한 파일 두 가지를 결합하십시오. 두 파일 모두에서 0.7071 대신 0.5를 시도하십시오. 또는 ARAN이 제안한대로 MultichannelMixer를 사용하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top