Obtendo fluxo de vídeo de câmera IP no Android (MJEPG)

Atualmente, estou fazendo um projeto AndAR no grupo 3. Eu sou a pessoa responsável pelo streaming de vídeo no telefone Android. Comprei uma câmera IP D-Link DCS-920 e descobri que ela usa o codec MJPEG para a transmissão de vídeo ao vivo e o servidor da Web usa o Jview para visualizar a transmissão ao vivo. Até onde eu sei, o MJPG não é um tipo de arquivo suportado para o sistema operacional Android, então tive uma ideia: em vez de usar o ImageView, uso o WebView para transmitir o vídeo. Eu implementei um conceito muito simples e funciona! Mas o problema é que a taxa de atualização é terrível. Recebo a imagem do vídeo (por exemplo:http://192.168.1.10/image.jpg) para visualizar no WebView e implementar um Timer para controlar a taxa de atualização (supostamente configurada para 30fps, que é atualizada a cada 33ms), mas só pode ir até um intervalo de 500ms, qualquer intervalo menor que eu note que não será mais suave , às vezes a imagem não carrega e a conexão é instável (por exemplo: descartada). Será que estou atualizando a uma taxa mais rápida do que pode receber? Mas no servidor Jview não tem problema! estava tentando encontrar o código fonte para o jview, mas não tenho esperança. Enfim, aqui está o código que escrevi

package org.example.test;

import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.EditText;

public class Webview extends Activity {

public WebView webView;
public Timer autoUpdate;
public String url;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);    

        webView = (WebView) findViewById(R.id.webview);
        webView.getSettings();
        final EditText urlText = (EditText) findViewById(R.id.urlText);

        //Buttons//////////////////------------
        final Button connectB = (Button)findViewById(R.id.connectButton);
        connectB.setOnClickListener(new View.OnClickListener() {
         public void onClick(View v) {
            //Actions goes here
          url = urlText.getText().toString();
          webView.loadUrl(url);
          timerSetup();
         }
        });
        final Button exitB = (Button)findViewById(R.id.exitButton);
     exitB.setOnClickListener(new View.OnClickListener() {
      public void onClick(View v) {
       //Actions goes here
       finish();
      }
     });
   }

    //refresh timer//////////////-----------------
    public void timerSetup(){
     autoUpdate = new Timer();
     autoUpdate.schedule(new TimerTask() {
      @Override
      public void run() {
       runOnUiThread(new Runnable() {
        @Override
     public void run() {
         //Actions goes here
         webView.loadUrl(url);
        }
       });
      }
     }, 0, 500);//refresh rate time interval (ms)
    }
}

Existe alguma maneira de obter a transmissão de vídeo em pelo menos 15 qps / ter uma taxa de atualização mais rápida? Existe algo como código MJPEG visualizador / fonte que eu possa usar para exibir essas imagens?

aqui está a captura de tela do aplicativohttp://s945.photobucket.com/albums/ad295/kevinybh/?action=view&current=video.jpg (pontos insuficientes para postar fotos) :(

Eu só preciso fazer o fluxo de vídeo em torno de 15-30fps. qualquer sugestão / ajuda seria muito apreciada :) Obrigado!

questionAnswers(5)

yourAnswerToTheQuestion