0

リアルタイムビデオを「シミュレート」するasp.netアプリケーションがあります。私は、mysqlデータベースから複数の画像を取得することを行いました。

問題は、それがWebページにどのように表示されるかです。写真ごとに1秒ページを更新すると、写真が途切れ途切れになり、ちらつきます。

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

ページのリフレッシュレートを1秒あたり4回にするにはどうすればよいですか?または、大陸の方法で表示するための実装はありますか。

返信していただければ幸いです。良い日(^ _ ^)..。

これが私がデータベースから画像を読み取るために使用しているスクリプトです。

If dr.Read Then dr.Read()Response.ContentType = "image / jpeg"'出力ストリームのタイプを取得または設定しますResponse.BinaryWrite(dr.Item( "file"))'バイナリ文字のストリームをhttp出力ストリームElseResponse.Write( "現在アクティブなwebccastはありません。")End If dr.Close()

4

5 に答える 5

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;
             }

         }
于 2009-03-16T23:45:50.830 に答える
1

本当にビデオをシミュレートしたい場合は、毎秒少なくとも 15 枚の画像 (15fps) を表示できる必要があります。1 秒間にそれほど多くのリクエストを行うことは、良い考えではありません。

絶対にこれを行う必要がある場合は、最初に画像を「バッファリング」してから表示し、可能であればバッチでフェッチすることをお勧めします。

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
于 2009-03-16T23:56:03.897 に答える
1

Javascript/Ajax を使用してコンテンツを変更するか、メタリフレッシュを行います (おそらく、高速リフレッシュには最適ではありません)。

于 2009-03-16T23:40:42.997 に答える
1

おそらく、複数の画像をページにロードし、javascript を使用してそれらの間を循環させることを考える必要があるでしょう。ページを更新する代わりに、AJAX を使用して画像を取得できます。

于 2009-03-16T23:43:54.970 に答える
0

これを html ドキュメントの head に追加します。最も効率的な方法ではありませんが、うまくいきます。

<meta http-equiv="refresh" content=".25" />
于 2010-10-27T21:58:17.443 に答える