我正在寻找一个良好的工作解决方案,在我的Android应用中集成IP-Cameras视频流。目前我正在使用具有良好图像质量的“Axis P1214-E”,但我无法从中获得“LIVE”流。流是非常迟缓的,或者是延迟几秒(有时甚至更多),或者流在一段时间后关闭。到目前为止我尝试了什么:
使用SurfaceView获取MJPEG流,如本文所述:Android and MJPEG 问题:滞后
使用WebView获取RTSP流:
public class MainActivity extends Activity {
private static final String TAG = "VideoViewExample.MainActivity";
private static final String RTSP_URL = "rtsp://ip/axis-media/media.amp";
private VideoView videoView;
private MediaController mediaController;
private OnPreparedListener opl;
private int position = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(savedInstanceState != null)
position = savedInstanceState.getInt("POSITION");
videoView = (VideoView) findViewById(R.id.videoView);
opl = new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
videoView.seekTo(position);
if (position == 0) {
videoView.start();
}
else {
videoView.pause();
}
}
};
if (mediaController == null){
mediaController = new MediaController(this);
}
mediaController.setAnchorView(videoView);
AsyncTask<Void, Void, Void> at = new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try{
videoView.setMediaController(mediaController);
videoView.setVideoURI(Uri.parse(RTSP_URL));
} catch (Exception e) {
Log.d(TAG, e.getMessage());
}
videoView.requestFocus();
videoView.setOnPreparedListener(opl);
return null;
}
};
at.execute();
}
@Override
protected void onPause() {
position = videoView.getCurrentPosition();
super.onPause();
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("POSITION", position);
}
}
现在我已经没有想法让这个工作了。对于我的应用程序来说,流是直播而不是滞后是非常重要的。 我正在使用Android 4.2.2开发一款“Banana Pi”主板(4.4也可以)。
有人知道怎么做这个吗?或者我应该使用其他相机?你有什么建议可以与android一起使用吗?
提前致谢
基督教