title: Android MediaRecorder Multiple Files
body: <p>I am using a MediaRecorder to record video from the camera save it as .mp4 to the SDCard, which works flawlessly.  I would like to limit the length of the .mp4 files to 10 seconds each and then automatically create a new file (ie:  If a user records 30 seconds I would like to create three files, segment1.mp4 (0:00-0:10), segment2.mp4 (0:10-0:20), and segment3.mp4 (0:20-0:30)).</p>
  
  <p>Here is where I set up the recorder and the output.  What should I be doing to make this happen while recording?</p>
  
  <pre><code>private boolean prepareVideoRecorder() {
  
          this.mMediaRecorder = new MediaRecorder();
          this.mCamera.stopPreview();
          this.mCamera.unlock();
          this.mMediaRecorder.setCamera(mCamera);
          this.mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
          this.mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
          this.mMediaRecorder.setOrientationHint(90);
          this.mMediaRecorder.setMaxDuration(this.VIDEO_CHUNK_LENGTH_MS);  //10,000 ms
          if (getAndroidSDKVersion() &gt;= 8) {
              this.mMediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
          } else {
              this.mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
              this.mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
              this.mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
          }
          this.mVideoFileName = getOutputMediaFile(MEDIA_TYPE_VIDEO).toString(); // Returns a proper file name
          this.mMediaRecorder.setOutputFile(mVideoFileName);
          this.mMediaRecorder.setPreviewDisplay(mPreview.getHolder().getSurface());
  
          try {
              this.mMediaRecorder.prepare();
          } catch (IllegalStateException e) {
              Log.d(TAG, "IllegalStateException preparing MediaRecorder: " + e.getMessage());
              this.releaseMediaRecorder();
              return false;
          } catch (IOException e) {
              Log.d(TAG, "IOException preparing MediaRecorder: " + e.getMessage());
              this.releaseMediaRecorder();
              return false;
          }
          return true;
      }
  </code></pre>