title: How to record (and process?) a video that is streamable from Android
body: <p>My company's app relies heavily on video recording and playback of web-based videos. I use the <code>MediaRecorder</code> API to record videos, through this library designed by me: <a href="https://github.com/afollestad/material-camera" rel="nofollow">https://github.com/afollestad/material-camera</a>. </p>
  
  <p>For playback, I use this library which is basically a wrapper around Google's ExoPlayer library: <a href="https://github.com/brianwernick/ExoMedia" rel="nofollow">https://github.com/brianwernick/ExoMedia</a>.</p>
  
  <p>It works fine for the most part with small videos, especially if I decrease bit rates for audio and video. However, larger and higher quality videos have many issues. Sometimes they seem to buffer forever, sometimes playback doesn't even start successfully, etc. Again, these videos are being streamed over HTTP from Amazon S3.</p>
  
  <hr>
  
  <p>I've read a little bit about FFMPEG, and how it can process MP4's for "faststart", splitting the files into chunks for DASH, etc. However, FFMPEG solutions for Android seem a bit complex, so...</p>
  
  <p>Is there anyway to record MP4's from Android, with <code>MediaRecorder</code>, <code>MediaCodec</code>, or some other API which results in a video file that is fast to stream? It amazes me how well Snapchat has figured this out.</p>