В настоящее время я работаю над проектом AndAR в группе из 3 человек. Я отвечаю за потоковую передачу видео на телефон Android.Я приобрел 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 кадров в секунду. Любые предложения / помощь будут очень благодарны :) Спасибо!