C # Потоковое видео - PullRequest
       2

C # Потоковое видео

3 голосов
/ 01 сентября 2011

Я пытаюсь создать приложение с видеопотоком, и теперь я могу отправить только одно изображение с сервера на клиент.Когда я пытаюсь отправить более одного изображения на клиенте, я получаю следующую ошибку: «Параметр недействителен».at pictureBox1.Image = new Bitmap (ms);

Код на стороне клиента:

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

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

}

Код на стороне сервера (этот код повторяется непрерывно):

servidor.sendImage(ms.GetBuffer());

Ответы [ 2 ]

3 голосов
/ 01 сентября 2011

ms.GetBuffer() возвращает весь буфер потока памяти, включая любую дополнительную неиспользованную часть.
Вы должны позвонить ToArray(), который возвращает только фактическое содержимое.

(или ваши данные могут быть недействительными по какой-либо другой причине, например, из-за проблемы в sendImage или receiveImage)

1 голос
/ 01 сентября 2011

Изображения - это мелочи, и вам нужно иметь полный набор байтов, составляющих изображение, чтобы восстановить изображение.

Я бы поспорил, что проблема в том, что когдаКлиентский объект получает данные, он получает их частями, состоящими из частичных изображений, а не всего изображения одновременно.Это может привести к сбою строки, в которой написано

pictureBox1.Image = new Bitmap(ms);

, поскольку у нее просто нет байтов всего изображения.

Альтернативы

  • Вместо того, чтобы сервер отправлял изображения клиенту, возможно, другим подходом было бы заставить клиента извлекать изображения с сервера.

  • Используйте существующий механизм потоковой передачи.Я лично считаю, что потоковое видео вручную из C # может быть более сложным, чем вы предполагаете, и я бы смиренно рекомендовал использовать существующий компонент или приложение для потоковой передачи видео, а не писать свое собственное.Уже есть так много разных вариантов (WMV, Flash и еще сотня), что вы изобретаете колесо, которое действительно не нужно заново изобретать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...