Tengo imágenes que se envían a mi base de datos desde una fuente de video remota a aproximadamente 5 fotogramas por segundo como imágenes JPEG. Estoy tratando de encontrar la forma de obtener esas imágenes en un formato de video para que pueda transmitir un video en vivo a Silverlight.Creación de una transmisión de video MJPEG en C#
Parece tener sentido crear una secuencia MJPEG pero estoy teniendo algunos problemas. En primer lugar, estaba tratando de transmitir a través de una solicitud HTTP, así que no tuve un acuerdo con los sockets, pero tal vez esto está rompiendo mi código.
Si trato de surf a mi flujo de QT me sale un error de vídeo, reproductor multimedia muestra la primera imagen y Silverlight se estrella :)
Aquí está el código que transmite - desde que tipo de contenido utilizado de esta manera puede solo se enviará una vez que sepa que no es ideal y podría ser la causa raíz. Todas las imágenes están llegando a través de un objeto LINQ2SQL.
Ya intenté simplemente actualizar la fuente de imagen de un control de imagen en Silverlight, pero el parpadeo no es aceptable. Si Silverlight no es compatible con MJPEG, entonces ningún punto continúa, pero parece que sí lo es. Tengo acceso a los marcos h.264 que entran, pero parece más complicado a través de 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);
}
¡Gracias!
EDITAR: Tengo la corriente que funciona en firefox así que si navego a la página veo un video! pero nada más acepta el formato. No IE, SL, reproductor de medios, nada.
¿Alguna vez resolvió esto? –
No utilizo este método: terminé cargando imágenes de fondo usando JS en el navegador y luego cambiando las imágenes tan rápido como llegaron. Funcionó bien – typemismatch
Tienes bastante lo básico, hay una implementación aquí @ https://net7mma.codeplex.com/SourceControl/latest – Jay