我想用java編寫一個應用程序,讓兩個客戶端通過網絡攝像頭通話。它的工作方式是兩個客戶端連接到一個網絡攝像頭,該網絡攝像頭可以以指定的幀速率(每秒20個)拍攝照片,然後減小尺寸和分辨率,然後通過UDP數據包將其發送到另一個客戶端。我的問題是 - 我應該發送每個圖片在自己的數據報包嗎?我讀過他們最多隻能容納半千字節,所以每張圖片都應該減少多少?或者我應該把它分成幾個小包?通過UDP發送圖片
0
A
回答
2
您確定要傳輸整個圖像,而不是使用僅傳輸需要更新的算法/編解碼器嗎?
如果您選擇第二個選項,您可以從this previous question以及已經使用和測試過的庫中獲得一些建議。如果我必須這樣做,我相信我會用VLC java bindings。您應評估什麼是您的特定用途(比特率,質量等)的最佳編解碼器。
如果你仍然想傳輸圖像,我建議你把它們分解成udp數據報,記住它們應該以某種方式編號/標記,以便客戶端可以重建圖像作爲數據包來(他們不一定會來以相同的順序發送它們),還需要考慮當某些數據包未能到達時丟棄圖像,請求以前的數據包等客戶端需要執行的操作。
最後一個思想,UDP報文最大尺寸未必是最好的選擇爲好,你的服務器 - 客戶端或許應該實現一個算法和協商UDP幀大小取決於傳輸速度。
0
你應該做的是編碼視頻流。離開網絡層,讓它爲你做分割。另外,如果你通過UDP發送視頻,你可能會想每隔2秒左右扔一個關鍵幀。
不要將每個幀作爲自己的圖像發送。使用視頻壓縮器。
+0
我應該從哪裏開始?我需要指出正確的方向。 –
相關問題
- 1. 通過udp發送的圖像損壞
- 2. 通過UDP發送音頻
- 3. 通過TCP發送圖片
- 4. 通過UDP套接字發送數據
- 5. PYTHON循環通過dict_keys和UDP發送
- 6. Android通過udp發送mpegts流
- 7. 通過UDP多播發送很長
- 8. 通過Java發送UDP數據包
- 9. 通過UDP發送HEX值套接字
- 10. 在Java中通過udp發送對象
- 11. 通過UDP發送的Ints是字節
- 12. 通過Java UDP聯網發送JPanel
- 13. 通過UDP連接發送數據(Bridge)
- 14. 通過UDP與QT發送文件
- 15. 通過UDP發送數據包
- 16. Python:通過UDP發送大對象
- 17. 通過udp發送數據包
- 18. 通過intent發送相機圖片
- 19. 通過郵件發送圖片
- 20. indexoutofboundsexception通過套接字發送圖片
- 21. 通過AJAX發送圖片onchange
- 22. 如何通過ajax post發送圖片?
- 23. 通過socket perl發送文件(圖片)
- 24. 圖片不發送通過UDP由於較少緩衝器大小C#
- 25. Java UDP服務器 - 客戶端通信 - 發送片段(片段發送失敗)
- 26. Firebase pyfcm通過圖片發送推送通知
- 27. Wit.ai - 通過Facebook Messenger發送圖片發送API
- 28. 如何通過UDP通過RTP發送aac原始數據?
- 29. 如何通過udp通過gstreamer發送QImages
- 30. 通過UDP接收數據並通過TCP發送
UDP數據報可以傳輸高達64K。然而,根據你的低層2(以太網),這個數據報將被分割成許多IP分段。碎片化的數據包將在接收主機處匯回,但如果其中一個碎片丟失,則所有UDP數據包都將丟失。 – jfg956