将RTSP流保存到android中的mp4文件

将相本无种,男儿当自强。这篇文章主要讲述将RTSP流保存到android中的mp4文件相关的知识,希望能为你提供帮助。
【将RTSP流保存到android中的mp4文件】我正在开发一个项目,我需要从IPCamera读取输入流。我可以通过rtsp url获取此信息。
显示IP摄像机流。我可以通过使用 -

videoView = (VideoView) this.findViewById(R.id.videoView1); MediaController mc = new MediaController(this); videoView.setMediaController(mc); videoView.setVideoURI(Uri.parse("rtsp://xxxxxxxx/camera1")); videoView.requestFocus();

现在我想将此流记录到MP4文件中。同样我使用mediarecorder.Here我被卡住了。
MediaRecorder mediaRecorder = new MediaRecorder(); //mediaRecorder.setAudiosource(MediaRecorder.AudioSource.DEFAULT); mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); mediaRecorder.setOutputFile("rtsp://xxxxxxxxx/camera1"); try { mediaRecorder.prepare(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } mediaRecorder.start();

谢谢
答案 使用ffmpeg
  1. 添加ffmpeg依赖项。 compile 'nl.bravobit:android-ffmpeg:1.1.5'
  2. 记录流。 String RTSP_URL = "rtsp://< your_rtsp_url> "; final File targetFile = new File( getExternalStoragePublicDirectory( Environment.DIRECTORY_MOVIES )+ "/recording1.mp4" ); final FFmpeg ffmpeg = FFmpeg.getInstance(this); String[] ffmpegCommand = new String[]{"-i", RTSP_URL, "-acodec", "copy", "-vcodec", "copy", targetFile.toString() }; final FFtask ffTask = ffmpeg.execute( ffmpegCommand, new FFcommandExecuteResponseHandler() {@Override public void onStart() {}@Override public void onProgress(String message) {}@Override public void onFailure(String message) {}@Override public void onSuccess(String message) {}@Override public void onFinish() {}} ); final Timer timer = new java.util.Timer(); TimerTask timerTask = new TimerTask() { @Override public void run() { ffTask.sendQuitSignal(); } }; timer.schedule( timerTask, 30000 ); // Will stop recording after 30 seconds.

    推荐阅读