Получение видеопотока с IP-камеры на Android (MJEPG)

В настоящее время я работаю над проектом AndAR в группе из трех человек. Я отвечаю за потоковую передачу видео в Телефон на Андроиде. Я купил IP-камеру D-Link DCS-920 и обнаружил, что она использует кодек MJPEG для видеопотока в реальном времени, а веб-сервер использует Jview для просмотра потока в реальном времени. Насколько мне известно, MJPG не является поддерживаемым типом файла для ОС Android, поэтому я пришел к идее: вместо использования ImageView я использую WebView для потоковой передачи видео. Я реализовал очень простую концепцию, и она работает! Но проблема в том, что частота обновления ужасна. Я получаю видеоизображение (например: http://192.168.1.10/image.jpg ) для просмотра в WebView и использую таймер для управления частотой обновления (предполагается, что он установлен на 30 кадров в секунду, то есть обновлять каждые 33 мс), но он может увеличиваться только до интервала 500 мс, любой более низкий интервал, как я заметил, не будет более плавным, иногда изображение не загружается и соединение нестабильно (например, отключено). Может быть, я обновляюсь быстрее, чем он может получать? Но на веб-сервере Jview проблем нет! пытался найти исходный код для jview, но у меня нет надежды. В любом случае, вот код, который я написал

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

Могу ли я получить видеопоток как минимум со скоростью 15 кадров в секунду / иметь более высокую частоту обновления? Есть ли такая вещь, как программа просмотра / исходный код MJPEG, которую я могу использовать для отображения этих изображений?

вот скриншот приложения http://s945.photobucket.com/albums/ad295/kevinybh/?action=view¤t=video.jpg (недостаточно очков для публикации изображений): (

Мне просто нужно сделать видеопоток со скоростью 15-30 кадров в секунду. Мы будем очень признательны за любые предложения / помощь :) Спасибо!

15
задан Divya Jain 19 June 2015 в 10:14
поделиться