Q&A

  • PCM파일재생 ASM콤포사용
CoolEdit로 PCM파일을 만들고(sample rate:8000, channel:mono, resolution: 8bit) 다음과 같이 테스트 프로그램을 ASM콤포넌트를 이용해서 작성했습니다..

PCM파일을 FileStream으로 불러와서 재생하게끔 한건데요..
맞는지는 모르겠습니다.. 여기저기 갖다 붙여서... ㅠㅠ

Dialog의 Codec은 PCM으로 설정했구요..
프로그램을 실행해서 버튼을 클릭하면... 엄청큰 잡음만 들립니다... ㅡ,.ㅡ;;

경험이 있으신 분이나.. 고수분들 코드 한번 봐주시기 바랍니다.. ^^



====================================================================
procedure TForm1.PlayWaveStream(Stream: TStream; Size: integer; aFormat: PWaveFormatEx);
var
  data: PChar;
  gauage, buffersize: Integer;
begin
  Stream.Position := 0;
  buffersize := 1024;
  gauage := 0;
  GetMem(data, buffersize);

  With FACMWaveOut  Do
  begin
    Open(aFormat);

    while gauage <= Stream.Size do
    begin
      Stream.Read(data^, buffersize);
      PlayBack(@data, buffersize);
      gauage := gauage + buffersize;
    end;
  end;
  FreeMem(data, buffersize);
end;

procedure TForm1.btnStartClick(Sender: TObject);
var
  OpenFile: TFileStream;
  Format : Pointer;

begin
  Format := FACMDialog.OpenDialog;
  OpenFile := TFileStream.Create('demo.pcm', fmOpenRead);
  PlayWaveStream(OpenFile, 1024, Format);
end;

=====================================================================
1  COMMENTS
  • Profile
    LDS 2004.10.16 19:06


    엄청큰 잡음만 들리신다고 해서 짐작이 가는 것은

    1. PCM파일은 (sample rate:8000, channel:mono, resolution: 8bit)로 되어 있으나 재생 하는 부분에서 재생 속성이 틀릴 경우 입니다.

    예를 들자면
    ex) PCM파일은 : PCM, 8000, mono, 8bit인데
          재생은        : PCM, 22050, mono, 8bit일 경우
         큰 잡음이 나오게 되더라구요

    2. 혹시 녹음이 잘못되어 그럴수도 있습니다.
       Windows Mediaplayer에서 들어 보세요

    3. FileStream쪽에서 버퍼 포인터 이동이 잘못 되었을 경우 등등 많이 있습니다.

    *근데 1번일 경우가 많더라구요

    저도 넘 허접해서리 ㅡ,.ㅡ

    그럼 즐거운 코딩 되세요