H264是目前最常用的视频压缩格式之一,可以将视频、图片、音频等转换为字符串流形式,以此可以进行再次编辑、传输等。详情参考http://blog.csdn.NET/lcalqf/article/details/42556219。
在Android里,最常用的视频编码解码用的API就是mediacodec了,可以进行多种格式的硬解码,也能和mediamuxer一起使用实现音视频文件的编辑(结合MediaExtractor),用OpenGL绘制Surface并生成mp4文件,屏幕录像以及类似Camera app里的录像功能(虽然这个用MediaRecorder更合适)等,注意它们和其它一些多媒体相关类的关系和区别:MediaExtractor用于音视频分路,和MediaMuxer正好是反过程。MediaFormat用于描述多媒体数据的格式。MediaRecorder用于录像+压缩编码,生成编码好的文件如mp4, 3gpp,视频主要是用于录制Camera preview。MediaPlayer用于播放压缩编码后的音视频文件。AudioRecord用于录制PCM数据。AudioTrack用于播放PCM数据。PCM即原始音频采样数据,可以用如vlc播放器播放。参考博客:http://www.thinksaas.cn/topics/0/348/348569.html
好了,然后开始我们的编解码之旅吧。
首先,在确定了输入源以后(我的是mSurface,里面是保存着我的截屏Surface),设置编码器:
MediaFormat format = MediaFormat.createVideoFormat(MIME_TYPE, mWidth, mHeight);//MIME_TYPE = "video/avc",H264的MIME类型,宽,高 format.setInteger(MediaFormat.KEY_COLOR_FORMAT,MediaCodecInfo.CodecCapabilities.