Ich würde dafür die Bass kompo nehmen und die
Indy.
Player1:
Mit der Bass dem Stream erstellen oder aufnehmen und den stream dann mit
Indy TCP /UDP versenden.
Player2:
Stream Empfangen und abspielen.
Versucht mal mehr nicht - kommerzielle wege zu gehn, so lernt man einfach besser mit der
IDE
umzugehen. Probiern geht ÜBER studiern.
Also einfach
IDE öffnen und versuchen.
Von VoIP komponente halte ich persönlich nicht viel da es meisten demos sind oder fertige
ActiveX kompos die schweine geld kosten. Und in der sache bin ich sowieso sehr eigen.
Erstell einfach mal zum Test einen Bass Stream also mit ner MP3 und versuch den einfach zu senden und auf dem anderen (PC) zu empfangen.
Die antworten vonwegen es gibt doch skype oder TS2 finde ich net so toll, die leute fragen ja nicht ob es sowas gibt um einen Link zu erhalten, sonder sie möchtn evtl mal selber sowas baun, und suchen einen weg.
Delphi-Quellcode:
// Server (Port 11)
procedure TForm1.EmpfaengerExecute(AContext: TIdContext);
Var Stream:hStream;
FStream:TFileStream;
InetVoIStream:TIDStreamVCL;
begin
Delmtext.Delimiter:='
,';
if ACOntext.Connection.Connected
then
begin
DelmText.DelimitedText:=ACOntext.Connection.IOHandler.ReadLn;
if DelmText.Strings[0] = '
GetVoice'
then
begin
fStream := TFileStream.Create(DelmText.Strings[1],fmopenwrite
or fmCreate);
InetVoIStream:=TIDStreamVCL.Create(fStream);
try
ACOntext.Connection.IOHandler.ReadStream(InetVoIStream);
FreeAndNil(fStream);
FreeAndNil(InetVoIStream);
finally
ACOntext.Connection.Disconnect;
try
stream:=bass.BASS_StreamCreateFile(false,Pchar(DelmText.Strings[1]), 0 ,0, BASS_SAMPLE_SOFTWARE);
finally
if not(stream =0)
then
Bass_channelPlay(stream,false);
end;
end;
end;
end;
end;
// Client (Port 10)
procedure TForm1.Button1Click(Sender: TObject);
Var
fStream:TFileStream;
InetVoIStream:TIDStreamVCL;
Path:
String;
begin
if not Sender0.Connected
then Sender0.Connect('
localhost',11);
if OpenDialog1.Execute
then
With Sender0.IOHandler
do
begin
WriteLn('
GetVoice,'+'
test.mp3');
Path := OpenDialog1.FileName;
fStream := TFileStream.Create(Path, fmOpenRead
or fmShareDenyNone);
InetVoIStream:=TIDStreamVCL.Create(fStream);
WriteBufferOpen;
Write(InetVoIStream);
WriteBufferClose;
FreeAndNil(fStream);
end;
end;
procedure TForm1.EmpfaengerStatus(ASender: TObject;
const AStatus: TIdStatus;
const AStatusText:
String);
begin
Memo1.Lines.Add(AStatusText)
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DelmText:=TStringlist.Create;
end;
So wie da funktioniert es, was ich leider nicht geschaft habe ist den Stream wieder freizugeben um ihn sofort abzuspielen, Das Prinziep ansich funzt. Ich bin auch kein Pro habe es mal ungeniert mal hingeklatscht.
Wie gesagt, die datei (stream) wird versendet und kommt auch an, nur ich krieg den Stream nicht frei ...