I created a h264 raw video file, and I was able to mux it with Android MediaMuxer on Android 4.3 and up. Now I need to support Android versions 4.1 and 4.2. I found Jcodec. And there is an example for doing this:
https://github.com/jcodec/jcodec/blob/master/samples/main/java/org/jcodec/samples/mux/AVCMP4Mux.java
But I'm getting java.nio.ReadOnlyBufferException exception at line 70:
H264Utils.encodeMOVPacket(data);
I guess this code is not for Android? How do I fix this. Can someone familiar with Jcodec help on this?
I gave up on Jcodec. It exposes too many codec internal stuff, and there is no documentation on usage at all. Mp4Parser did the job for me, and it's simple. Here is the code I mux raw h264 video into mp4 container:
Code examples were found here. Loop is closed! Now my video encoder implementation works from Android 4.1 and up, without the need of FFMpeg
BTW: Android stock "Gallery" app uses Mp4Parser, listed in its open source licenses.