젤리빈 이상이라면 MediaCodec 클래스를 이용하시면 HW 코덱으로 인코딩 하실 수 있습니다..
https://gist.github.com/wobbals 에 보시면 yv12.java 를 보시면 Bitmat에서 YUV 데이터를 구해 올 수 있으며 이걸 AvcEncoder.java 코드를 이용하면 인코딩 될 겁니다.
이 이하 버젼은 java api는 없고 JNI로 안드로이드 native 함수를 사용할 수는 있지만 설명드리기도 힘들고,
단말 특성을 타서 거의 지원이 힘듭니다..
젤리빈 이하 버젼도 지원하려면 ffmpeg를 사용하시는게 제일 좋으며, API 사용법은 ffmpeg.c 파일을 보시는 것을 권장합니다