2009-03-16 14 views
0

Ich habe eine asp.net-Anwendung, die Echtzeit-Video simulieren würde. Ich habe das erworben, mehrere Bilder aus einer MySQL-Datenbank.Wie wird eine Webseite automatisch mit ASP.NET aktualisiert?

Das Problem ist, wie würde es auf der Webseite angezeigt werden.? Ich aktualisiere die Seite 1 Sekunde pro Bild, das Ergebnis sind die Bilder sind abgehackt und Flicker.

Response.AppendHeader("Refresh", "1") 

Wie kann ich die Aktualisierungsrate der Seite 4 Mal pro Sekunde machen? oder gibt es eine Implementierung, die auf kontinentale Weise angezeigt wird?

Ich würde wirklich schätzen, wenn Sie antworten werden. Guten Tag (^ _ ^) ...

Hier ist das Skript, das ich verwende, um die Bilder aus der Datenbank zu lesen.

Wenn dr.Read Dann dr.Read() Response.ContentType = "image/jpeg" 'bekommt, oder legt die Art des Ausgangsstroms Response.BinaryWrite (dr.Item ("file"))', schreibt ein Strom von binären Zeichen an den http Ausgabestrom Else Response.Write ("Es gibt keine aktuelle aktive webccast.") End If dr.Close()

Antwort

1

ich entweder würde einig Javascript/Ajax verwenden, um Ändern Sie den Inhalt oder die Meta-Refresh (wahrscheinlich nicht die beste für schnelle Aktualisierung).

+0

Welche Art von Javascript/Ajax? .. Können Sie bitte mehr ausarbeiten? –

1

Vielleicht müssen Sie darüber nachdenken, mehr als ein Bild auf die Seite zu laden und Javascript zwischen ihnen zu verwenden. Anstatt die Seite zu aktualisieren, können Sie die Bilder mit AJAX abrufen.

+0

Wenn ich mehr als ein Bild auf die Seite laden würde. Die Essenz des "Simulierens" von Live-Video-Streaming wird verloren gehen. –

+0

Sie könnten versuchen, sie zu laden, aber sie mit CSS/Javascript versteckt halten, bis benötigt –

+0

Ich denke, die Geschwindigkeit der Seite wird geladen werden. –

3
create a javascript method to change the image using xmlhttpobject and recursively set a timer 


     function Timer() { 

      setTimeout("getImage(['imageContainer1'])", 200); 
      t = setTimeout("Timer()", 100); 
         } 

     function getImage(params) { 
      var request=getXMLhttpObject(); 
      makeRequest("ajax/ObtainImage.aspx?name='myimage'+param[1]+'.jpg",request, imageResponseHandler(request, params)); 

        } 

    function getXMLhttpObject() { 

      return (navigator.appName == "Microsoft Internet Explorer")? new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest(); 
           } 

function makeRequest(url,request, Handler) { 

      request.open("GET", url, true); 
      request.onreadystatechange = Handler; 
      request.send(null); 

     } 


    function imageResponseHandler(request,params) { 
      return function() { 
       if (request.readyState == 4) 
        document.getElementById(params[0]).src = request.responseText; 
      } 

     } 
+0

Entschuldigung, aber ich bin neu in dieser Sprache, und was ist "getXMLhttpObject"?.? Ich kenne jetzt viele dieser Art von Programmierung. Kannst du es bitte in visuelle Basis umwandeln? –

+0

das ist Javascript, ich habe gerade getXmlHttpObject Methode –

1

Wenn Sie wirklich Video simulieren möchten, müssen Sie mindestens 15 Bilder je Sekunde (15 fps) angezeigt werden können. Es ist keine gute Idee, so viele Anfragen pro Sekunde zu stellen.

Wenn Sie unbedingt das tun müssen, würde ich „Pufferung“ die Bilder zuerst schlagen vor ihnen, und wenn möglich, die Anzeige, so dass sie in den Reihen holen:

buffer = []  // cache loaded images 
bufferSize = 30 // load 30 images before playing 

function loadImage(src) { 
    var img = new Image() 
    img.src = src 
    buffer.push(img) 
} 

function animate(target) { 
    if (buffer.length > 0) { 
     var img = buffer.shift() 
     document.getElementById(target).src = img.src 
    } 
} 

function bufferImages() { 
    for (var i=0; i<bufferSize; i++) { 
     loadImage('/ajax/ObtainImage.aspx?name=img') 
    } 
} 

setInterval("animate('imgTarget')", 65) // should give us about 15fps 
setInterval("bufferImages()", 1000) // every second 
+0

welche Art von Ajax würden Sie mir empfehlen zu verwenden. –

+0

Wenn Sie wirklich Video simulieren möchten, müssen Sie in der Lage sein, mindestens 15 Bilder pro Sekunde (15fps) anzuzeigen. Es ist keine gute Idee, so viele Anfragen pro Sekunde zu stellen ... Ich werde meine Antwort umschreiben, um das zu reflektieren. – elo80ka

+0

Ich lese die Bilder aus der Datenbank, und die Bilder sind im Spaltenfeld eines BLOB-Typs. Ich denke, wir sind an der Spitze, wir müssen nur springen, um es richtig zu machen., Können Sie mir helfen? –

0

Fügen Sie diese auf den Kopf Ihrer html Dokument. Nicht der effizienteste Weg, aber es wird funktionieren.

<meta http-equiv="refresh" content=".25" /> 
Verwandte Themen