一、媒体一些常用的API接口
1.mediaExtractor : 视频分离
mediaExtractor使用一般过程:
1.//设置数据源 setDataSource
2.//分离轨道 getTrackCount,getTrackFormat
3.//选择轨道 selectTrack,unselectTrack
4.//读取数据 readSampleData
5.//下一帧 advance
6.//释放 release
2.mediaMuxer : 视频合成
mediaMuxer使用一般过程:
1.new MediaMuxer(String "合成的路径 " , "和成的格式");
2.//添加轨道 addTrack
3.写数据 writeSampleData
4.释放 release
3.mediaCodec : 媒体的编解码器件,即为媒体的编码/解码的组件
meidaCodec的使用过程
1.创建编解码器 createDecodeByType/createEnconderByType
2.对编解码进行配置 config(MediaFormat , Surface (将获得outputBuffer放在SurfaceView上面显示), MediaCrypto(加密) , int flag )
1)、videoDecode.config(MediaFormat , Surface , null , 0 );
//将SurfaceTexture作为参数创建一个Surface,用来接收解码视频流
mVideoDecoder.configure(format,new Surface(mVideoSurfaceTexture),null,0);
2)、videoEncode.config(MediaFormat , 0 , 0, MediaCodec.CONFIGURE_FLAG_ENCODE)
mVideoEncoder.configure(videoFormat,null,null,MediaCodec.CONFIGURE_FLAG_ENCODE = 1);
3.编解码器开始工作 start
4.getInputBuffer、getOutputBuffer 、deququeInputBuffer 、dequeueOutputBuffe四个函数开始工作
4.mediaFormat : 媒体数据格式的信息
二、mediaCodec使用的思想
1.MediaCodec.createDecoderByType : 创建解码器
2.MediaCodec.createEnconderByType: 创建编码器
3.MediaCodec.getInputBuffer : 从 mediaCodec中获得InputBuffer---------->传递解码器的
4.MediaCodec.getOutputBuffer : 从mediaCodec中获得OutputBuffer-------->传递给编码器的
5.MediaCodec.deququeInputBuffer : 把数据传递给编/解码器
6.MediaCOdec.dequeueOutputBuffer : 编/解码得到数据-----mediaDeconder.config(mediaFormat , surfaceView,MediaCrypo,int)中的Surface(一般指SurfaceView)会讲内容显示在Surface上面
三、mediaExtractor使用思想
1. SAMPLE_FLAG_SYNC : 表示关键帧----> I 帧