2011-09-01 143 views
3

我試圖做一個應用程序與視頻流,現在我只能發送一個圖像從服務器到客戶端。當我嘗試在客戶端發送多於一個圖像時,我收到以下錯誤:「參數無效」。在pictureBox1.Image =新的位圖(毫秒);C#視頻流

客戶端代碼:

while((data = cliente.receiveImage()) != null) 
{ 

    ms = new MemoryStream(data); 
    pictureBox1.Image = new Bitmap(ms); 
    ms.Close(); 

} 

服務器端代碼(這些代碼被連續地重複):

servidor.sendImage(ms.GetBuffer()); 

回答

3

ms.GetBuffer()返回存儲器流的整個緩衝器,包括任何額外的未使用的部分。
您應該致電ToArray(),它只返回實際內容。

(或者,你的數據可能是無效的某些其他原因,如sendImagereceiveImage問題)

1

圖像被挑剔的東西,你必須有一整套字節組成的圖像以重建圖像。

我敢打賭,我的左鞋問題是,當客戶端對象正在接收數據時,它會以部分圖像組成的塊,而不是整個圖像。這將導致該說

pictureBox1.Image = new Bitmap(ms); 

失敗,因爲它根本就沒有一個整體的形象的字節線。

替代

  • 而不是讓服務器推送圖像輸出到客戶端,也許是另一種方法是將有來自服務器的客戶端請求的圖像。

  • 使用現有的流式機制。我個人認爲,從C#手動流式傳輸視頻可能比您討價還價更復雜,我會虛心推薦使用現有組件或應用程序來流式傳輸視頻,而不是自己編寫視頻。在那裏已經有很多不同的選擇(wmv,Flash和一百多個),你正在重塑一個真正不需要重新發明的輪子。