看板 GameDesign 關於我們 聯絡資訊
各位大大好 最近小魯在嘗試用socket 將unity的webcamtexture即時傳送到另一台電腦 (電腦對電腦成功的話未來想嘗試用手機對手機) 目標暫時為demo而已 會使用區域網路 使用unity的原因是因為之後這功能會配合一些其他unity特效~ -------------------- 流程是: 在socket一邊當server server電腦取得webcamtexture後 (size = W/H/3) 用compute shader排成一整條 float[W*H*3] 再轉成byte[W*H*3] , 再送到socket client用compute shader組合回來 實作起來流程大致沒問題 但是只有在size小的時候可以 比如我每筆資料為 byte[640*480*3]的話 送過去組起來結果每張都是破爛 黑的很嚴重 T.T https://i.imgur.com/e7V4kz4.png
但是我如果resize成0.1倍 每筆資料為 byte[64*48*3]的話能顯示正確的模糊圖(雖然動動攝影機 還有些延遲感) https://i.imgur.com/woTiZYR.png
在client端我用C#的queue去累積儲存送來的資料 有累積資料就排出來這樣~~ 想問的是: 這是socket做這件事的正常現象嗎 ?? 我有查找過就是大圖的時候 收到的值真的很多是0 所以畫出來一堆黑黑~~ 是否有建議的傳送資料解決方法呢 畢竟不能這麼糊又LAG QQ 稍微附上使用的server及client腳本 server: https://i.imgur.com/DAY3sFQ.png
client: https://i.imgur.com/Gxp8pF4.png
client那邊的Queue儲存後 就用Shader顯示成結果~~~! 希望有經驗的大大指點迷津 >///< !! 感謝感謝 !! -- 果我們要把磁鐵棒放進線圈,    線圈會說「不!!不要過來!!」而發出阻力不讓磁鐵棒靠近。  但是如果我們要把放進去的磁鐵棒從線圈拿走,         「傲嬌是一種  線圈反而會說「我…我又沒有叫你走!!」而發出阻力不讓磁鐵棒離開。  自然現象」  這種現象不就是傲嬌嗎!                     新科科人雜誌  所以傲嬌這東西根本不是新梗,19世紀就有科學家發現傲嬌了。     /民明書房 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.104.205 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1614671348.A.DF9.html
newyellow: 說不定可以參考古早電視的做法?分開送單數列和雙數列 03/02 17:04
doasgloria: 意思是說 一張圖真的沒辦法用單一筆資料傳送囉QQ 03/02 17:18
doasgloria: 這樣就得設計傳送跟接收的模式了~~ 03/02 17:19
oopFoo: 你有設Socket.ReceiveBufferSize?如果沒有你需要檢查 03/02 17:21
oopFoo: recvLen然後loop把資料讀完。 03/02 17:22
LayerZ: update裡面做的話,每frame裡面資料還沒傳完就更新然後炸 03/02 21:27
damody: 請用串流壓縮 03/02 21:31
oopFoo: https://reurl.cc/9Zv1ex 03/02 22:33
oopFoo: 你需要檢查totalSize 跟 recvLen。 03/02 22:34
newyellow: 如果只是想要單純塞在一筆資料裡 應該也是可以 03/03 00:00
newyellow: 但如果你不是一次性傳送檔案 而是想串流的話 03/03 00:01
newyellow: 那重點應該就是每個 frame 的網路流量限制的問題 03/03 00:01
newyellow: 為什麼當初電視會分單雙數列 就是因為頻寬不夠 03/03 00:02
doasgloria: oo大的方法確實查出問題了 發送端顯示出去的每筆資料 03/03 09:15
doasgloria: 都是固定長度 但是接收到的每筆都是不同的 比較小 03/03 09:15
doasgloria: 統計接收到的資料筆數也比發送的多的樣子 03/03 09:15
doasgloria: 這是由於網路品質造成的還是軟體可以設定優化呢QQ 03/03 09:15
oopFoo: Socket就是這樣。ReceiveBufferSize可以加大,不過加大有 03/03 10:16
oopFoo: 加大的問題。你在Windows上可以考慮用IOCP不要用Socket, 03/03 10:16
oopFoo: 效能好很多,也是未來的趨勢。 03/03 10:17
oopFoo: 640x480x3x60幀,每秒50+MB的資料,GB網卡是ok,但可考慮 03/03 10:22
oopFoo: 轉成jpeg再傳送,資料小很多。 03/03 10:22
doasgloria: 可是之後可能要轉移平台到手機上 Q_Q 應該還是得用 03/03 12:16
doasgloria: 現在方式去慢慢弄 現在可以完整顯示每一frame了只是會 03/03 12:17
doasgloria: lag 不過只是我在合併資料慢造成的~~ 真感謝OO大 !! 03/03 12:17
doasgloria: ^0^ 03/03 12:17
darkflier: 用udp傳,然後記得壓縮圖檔,一包不要超過64k超過要分 03/06 04:13
darkflier: 割 03/06 04:13