안녕하세요
acmcomponenet 1.6으로 시도하다가 다알로그를 컨트롤 하지 못해서.
deAudio라는 사용라이브럴리를 가지고 그거와 같이 시도를 해보는데요.
둘다 비슷합니다. 거의 같은 구조를 가지고 있구요.
UDP 서버 클라이언트를 이용해서
Audio IN에 있는 버퍼내용을 소켓으로 전송해서 Out버퍼에 넣고 출력하는 예인데요.
G723.1 GSM ADPCM으로 해봐도 데이터가 전송이 되는데 음이 깨지네요~~
코덱에 대한 지식이 별로 없어서 잘 모르겠지만 혹시
블럭별로 전송을 해야 재생시 문제가 없는건지요? 지정된 음에 블럭이라던가 말이죵.
//전송부.
procedure TSendFrm.deAudioConvertor1AudioConverted(Sender: TObject;
AudioData: Pointer; AudioDataSize: Integer; var Abort: Boolean);
begin
// send AudioData via UDP to UDP Server...
Sock.SendBuffer(AudioData^, AudioDataSize);
Bytes := Bytes + AudioDataSize;
BytesLbl.Caption := Format('%u', [Bytes]);
UpDate;
end;
//수신부.
procedure TRecvFrm.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
AudioDataSize: Integer;
AudioData: Pointer;
begin
deAudioConvertor1.ConvertAudio(Addr(AData), AData.Size);
Bytes := Bytes + aData.Size;
BytesLbl.Caption := Format('%u', [Bytes]);
UpDate;
end;
데이터의 완벽한 전송을 .. 보장 하지않습니다.
다시말하자면... 손실을 감수하면서 .. 속도를 높이 겠다는
이야기 입니다.
그러니...음이 깨진다구 해도..
어절수 없는 일이 겠지여.
TCP , RTP(2000이상에서는 지원하는 걸루 아라고 있습니다) 를 쓰셔야 할것 같군여
컴포를.. 써본적이 없어서.. 다른 부분은 글쎄여..^^;
그럼 즐프 하세여