Как реализовать потоковую передачу видео на C#?

интернет программирование C# .net потоковое видео

Собственно, вот и весь вопрос. Гугление дало плохие результаты.
Я попытался сделать самостоятельно, получилось следующее: http://pastebin.com/ZUYyAD2k

Большие картинки передаются плохо, быстро зависает.
Время зависания обратнопропорционально размеру передаваемой картинки.

Примечание:
Да, картинка не обновляется.
Событие нового фрейма и так в отдельном потоке выполняется, как я понял, экспериментируя с афоргом.
На стороне клиента же функция приема фреймов сама обновляет pictureBox1:
while (true)
{
Application.DoEvents();//А это не дает "зависнуть" интерфейсу
Image frame = F.ReserveData<Image>(ns);
if (frame != null)
{
pictureBox1.Image = frame;
pictureBox1.Invalidate();//обновление
pictureBox1.Update();/тоже обновление?
}
}
Ответы:
В смысле зависает? Совсем или просто временно не обновляет графический интерфейс? Попробуйте вынести работу с сетью в отдельный поток, чтобы она не блокировала поток отвечающий за обработку интерфейса.
>Событие нового фрейма и так в отдельном потоке выполняется, как я понял, экспериментируя с афоргом.
Вы про это videoSource_NewFrame? Но почему у Вас тогда нет синхронизации на доступ к bitmaps? Получается, что у Вас операции bitmaps.RemoveAt(0) и bitmaps.Add(image) могут одновременно выполнятся в разных потоках, а List<T> не гарантирует целостность в таких случаях.
Кстати у Вас ещё одна ошибка: в функции ReserveData Вы не проверяете возвращаемое значение у следующих методов:
stream.Read(buffer, 0, buffer.Length);
stream.Read(buffer2, 0, buffer2.Length);
Данные вызовы вовсе не обязаны заполнить буфер целиком. Они могут взять данные, которые уже есть, записать в буфер и выйти, а не дожидаться пока поступит больше данных, для заполнения всего буфера.


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.