Android IP摄像头

时间:2014-11-21 08:39:20

标签: android ffmpeg video-streaming gstreamer ip-camera

我正在寻找一个良好的工作解决方案,在我的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);      
        
    }

}
问题:视频质量很好,但延迟了。

  • 使用FFMPEG和GSTREAMER等外部框架(目前只有一些例子) 问题:也非常滞后和/或延迟。

现在我已经没有想法让这个工作了。对于我的应用程序来说,流是直播而不是滞后是非常重要的。 我正在使用Android 4.2.2开发一款“Banana Pi”主板(4.4也可以)。

有人知道怎么做这个吗?或者我应该使用其他相机?你有什么建议可以与android一起使用吗?

提前致谢

基督教

0 个答案:

没有答案