У меня есть изображения, отправляемые в мою базу данных из удаленного источника видео со скоростью около 5 кадров в секунду в виде изображений JPEG. Я пытаюсь выяснить, как преобразовать эти изображения в видеоформат, чтобы я мог транслировать поток живого видео в Silverlight.
Кажется, имеет смысл создать поток MJPEG, но у меня есть несколько проблем. Сначала я пытался выполнять потоковую передачу через HTTP-запрос, поэтому у меня не было сделок с сокетами, но, возможно, это нарушает мой код.
Если я пытаюсь перейти к своему потоку из QT, у меня появляется ошибка видео, проигрыватель мультимедиа показывает изображение первого кадра и происходит сбой Silverlight:)
Вот код для потоковой передачи - поскольку используемый мной тип контента может быть отправлен только тогда, когда я знаю, что он не идеален и может быть основной причиной. Все изображения поступают через объект LINQ2SQL.
Я уже пытался просто обновить источник изображения для элемента управления изображением в Silverlight, но мерцание неприемлемо. Если Silverlight не поддерживает MJPEG, то нет смысла даже продолжать, но похоже, что это так. У меня есть доступ к фреймам h.264, но через MP4 это казалось более сложным.
Response.Clear();
Response.ContentType = "multipart/x-mixed-replace; boundary=--myboundary";
ASCIIEncoding ae = new ASCIIEncoding();
HCData data = new HCData();
var videos = (from v in data.Videos
select v).Take(50); // sample the first 50 frames
foreach (Video frame in videos)
{
byte[] boundary = ae.GetBytes("\r\n--myboundary\r\nContent-Type: image/jpeg\r\nContent-Length:" + frame.VideoData.ToArray().Length + "\r\n\r\n");
var mem = new MemoryStream(boundary);
mem.WriteTo(Response.OutputStream);
mem = new MemoryStream(frame.VideoData.ToArray());
mem.WriteTo(Response.OutputStream);
Response.Flush();
Thread.Sleep(200);
}
Спасибо!
РЕДАКТИРОВАТЬ: у меня есть поток, работающий в Firefox, поэтому, если я перехожу на страницу, я вижу видео! но ничто другое не принимает формат. Не IE, SL, медиаплеер - ничего.