如何实现通过网络传送音频,音频的格式为MP3
使用什么方法比较简单
看了看MMTOOLS,功能很强大,但没有帮助不知道如何用

解决方案 »

  1.   

    http://www.chinaspx.com/archive/VC/8520.htm
    --------------------------------------------
    这个讲的比较清楚,可惜---是VC的
      

  2.   

    用MMTOOLS的dll或ocx,调用它的函数
      

  3.   

    liangyong007a
    请问mmtools的dll或ocx的接口那里能找到帮助,他提供的东西太丰富了
      

  4.   

    说说你们是怎么做的,我现在正在实现这个程序。不过还没有实现同时录音和播放。
    用mmtools控件:
    procedure TForm1.WaveInStart(Sender: TObject);
    begin
       { set the stream size for max speed }   MemStream.SetSize(wioTimeToBytes(WaveIn.PWaveFormat,WaveIn.MaxRecordTime));
       OutMemStream.SetSize(wioTimeToBytes(WaveIn.PWaveFormat,WaveIn.MaxRecordTime));
       MemStream.Position := 0;
       OutMemStream.Position := 0;
       BytesRecorded := 0;   edit1.Text := IntToStr(MemStream.Size);
       btnRecord.Enabled := False;
       btnPlay.Enabled := False;
       btnStop.Enabled := True;
    end;{------------------------------------------------------------------------------}
    procedure TForm1.WaveInStop(Sender: TObject);
    begin
       WaveIn.Close;
       btnPlay.Enabled := True;
       btnRecord.Enabled := True;
       btnStop.Enabled := False;
    end;{------------------------------------------------------------------------------}
    procedure TForm1.WaveInBufferReady(Sender: TObject; lpWaveHdr: PWaveHdr);
    begin
       { we got new data from WaveIn, put it in the stream }
       MemStream.Write(lpWaveHdr^.lpData^, lpWaveHdr^.dwBytesRecorded);   OutMemStream.Write(lpWaveHdr^.lpData^, lpWaveHdr^.dwBytesRecorded);
       //BytesRecorded := 0;
       edit2.Text := IntToStr(BytesRecorded);
       inc(BytesRecorded, lpWaveHdr^.dwBytesRecorded);
       //if (wioTimeToBytes(WaveIn.PWaveFormat,WaveIn.MaxRecordTime) <= BytesRecorded + 2*WaveIn.BufferSize) then
       ///begin
       // self.Timer1.Enabled := True;
         //showmessage('OK');
       //end;
    end;{------------------------------------------------------------------------------}
    procedure TForm1.WaveOutStart(Sender: TObject);
    begin
       btnRecord.Enabled := False;
       btnPlay.Enabled := False;
       btnStop.Enabled := True;
    end;{------------------------------------------------------------------------------}
    procedure TForm1.WaveOutStop(Sender: TObject);
    begin
       WaveOut.Close;
       btnPlay.Enabled := True;
       btnRecord.Enabled := True;
       btnStop.Enabled := False;
    end;{------------------------------------------------------------------------------}
    procedure TForm1.WaveOutBufferLoad(Sender: TObject; lpWaveHdr: PWaveHdr; var MoreBuffers: Boolean);
    var
       nBytes: Longint;
    begin
       { how many bytes do we need for this buffer }
       nBytes := lpWaveHdr^.dwBufferLength;   { do we have enough data ? }
       if (BytesRecorded-BytesPlayed < nBytes) then
           nBytes := BytesRecorded-BytesPlayed;   { WaveOut needs Data, get it from the stream }
       Move((PChar(OutMemStream.Memory)+BytesPlayed)^, lpWaveHdr^.lpData^,nBytes);   { flag how many bytes we have loaded }
       lpWaveHdr^.dwBytesRecorded := nBytes;   { and increase our counter }
       inc(BytesPlayed, nBytes);   { flag if we have more data to play }
       MoreBuffers := BytesPlayed < BytesRecorded;
       edit2.Text := IntToStr(lpWaveHdr^.dwBufferLength);
    end;{------------------------------------------------------------------------------}
    procedure TForm1.btnRecordClick(Sender: TObject);
    begin
       { start recording }
       WaveIn.Start;
       WaveOut.PWaveFormat := WaveIn.PWaveFormat;
    end;
      

  5.   

    能否共享一下程序:我的email:[email protected],QQ:54332537。