最近在搞在線UDP視頻傳輸,在客戶端抓圖,壓縮后生成資料存盤在
FrameBuf:array [0..704*576*3 ] of Byte; 這樣的一個陣列中
再通過 IdUDPClient1.SendBuffer(FrameBuf,Ret); 將資料發送到服務端,現在我想怎么樣才能在服務端得到的TStream中轉換成 FrameBuf并進行解壓。
或者誰有最簡單的點對點視頻,包括采集,壓縮,解壓,顯示,要求100K的網路中不卡的視頻100R收
uj5u.com熱心網友回復:
要先把陣列,轉換成記錄型別再發送,接到到記錄再處理。uj5u.com熱心網友回復:
首先,UDP發送的包位元組數不要太大,你這704*576*3得是多少位元組啊。每個UDP包不要超過1024位元組。
你先創建一個緩沖區,行將生成的資料放在這個緩沖區,然后回圈每次發送 1024 位元組。在每個資料包前添加包序號,
接收時按順序處理。
要提高速度,一個是網路,在就是對源資料進行壓縮處理。
至于怎么壓縮那就不知道了,這可以每個搞視頻語音傳輸聊天的核心技術。
uj5u.com熱心網友回復:
TStream的派生類TMemoryStream有個Memory屬性,是指標型別,始終指向Stream的首位元組。你可以這樣訪問type
PFrameBuf = ^TFrameBuf;
TFrameBuf = array [0..704*576*3 ] of Byte;
PFrameBuf(stream.Memory)[0]
uj5u.com熱心網友回復:
setlength(buffer,size);stream.Position := 0;
stream.read(buffer[0],size);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/103104.html
標籤:網絡通信/分布式開發
上一篇:Delphi ClientSocket 連接同步的判斷
下一篇:comm口問題 幫忙看一下代碼
