全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3921
推到 Plurk!
推到 Facebook!

用INDY的idTCP來傳送acm音頻

尚未結案
hanli
一般會員


發表:4
回覆:5
積分:1
註冊:2005-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-28 17:49:08 IP:221.199.xxx.xxx 未訂閱
我想用INDY的idTCP來傳送acm音頻代碼如下,但是Server那邊卻聽不到聲音,哪位幫我看看是什么錯誤那?代码如下: //髮送 procedure TForm1.ACMWaveIn1Data(data: Pointer; size: Integer); var pchData:pChar; myStream:TMemoryStream; begin pchData:=pchar(data); if pchData[1]='' then exit; myStream:=TMemoryStream.Create; try myStream.Write(pchData^,size); if idTCPClient1.Connected then begin idTCPClient1.WriteInteger(memStream.size); idTCPClient1.WriteBuffer(myStream.Memory^, myStream.Size, True); end; finally myStream.Free; end; end; //接收 procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread); var mystream:TMemoryStream; recData:string; pcharplaystr:pchar; BuffLen: Integer; n: integer; begin BuffLen := AThread.Connection.ReadInteger; myStream:=TMemoryStream.create; try AThread.Connection.ReadStream(myStream,BuffLen); Setlength(recdata,BuffLen); myStream.Read(recdata[1],BuffLen); //将流转换成字符串 pcharplaystr:=pchar(recData); ACMWaveOut1.PlayBack(pcharplaystr,BuffLen); //播放接收到的数据 finally myStream.free; end; end;
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-28 18:52:48 IP:210.68.xxx.xxx 未訂閱
您好:PO程式碼的方式請參考版規說明,煩請修改謝謝您的配合 < href="http://delphi.ktop.com.tw/topic.php?TOPIC_ID=58991">http://delphi.ktop.com.tw/topic.php?TOPIC_ID=58991
pcplayer99
尊榮會員


發表:146
回覆:790
積分:632
註冊:2003-01-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-05 19:01:20 IP:219.133.xxx.xxx 未訂閱
传声音,最好用UDP。 你先不要用TCP来传,先直接把取到的声音数据丢给WaveOut,看看能不能播放出来。
hanli
一般會員


發表:4
回覆:5
積分:1
註冊:2005-03-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-05 21:29:14 IP:61.134.xxx.xxx 未訂閱
感謝pcplayer99 網友的囬復,因為我的測試環境有限,不知道為什么用UDP協議傳送文本都不行,可能是雙方的電腦處于NAT或防火牆之內,所以我想用TCP建立一套獨立的傳輸信令,來接收和傳送數據。所以不想用UDP協議。我已經將代碼脩改,但聽到的是很大的雜音。Delphi用的不是很好,希望大傢指教!
pcplayer99
尊榮會員


發表:146
回覆:790
積分:632
註冊:2003-01-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-05-06 10:46:41 IP:219.133.xxx.xxx 未訂閱
你在写代码的实验阶段,怎么能拿两台不在一起的电脑来试?这样做,有问题的话,问题究竟在哪里,很难搞清楚啊。 最简单的做法,是自己的电脑,又是发,也是收。自己发数据包给自己。
hanli
一般會員


發表:4
回覆:5
積分:1
註冊:2005-03-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-05-09 18:17:39 IP:222.74.xxx.xxx 未訂閱
自己的一臺電腦收和髮能夠接收到都是雜音。可能是acm寫法不對,但是又不知道是哪裏的錯誤。希望指教!
killghost
一般會員


發表:14
回覆:21
積分:7
註冊:2004-04-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-05-23 09:48:03 IP:218.88.xxx.xxx 未訂閱
将完整的程序贴出来吧,也许可以帮你测试一下。
goodbye
一般會員


發表:5
回覆:8
積分:2
註冊:2005-04-29

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-05-29 13:27:35 IP:59.107.xxx.xxx 未訂閱
还有,不要在里面创建一个流,你太频繁create,不是很好的 我用udp的,就传一个char[1024]过去,实际上包也不可能太大,MTU限制死了
killghost
一般會員


發表:14
回覆:21
積分:7
註冊:2004-04-21

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-06-02 10:07:07 IP:218.88.xxx.xxx 未訂閱
这里有个例子,去看看吧。 http://www.delphifans.com/SoftView/SoftView_531.html
系統時間:2024-03-29 19:52:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!