MediaCodec Demo
来源:互联网 发布:html5特效程序员 编辑:程序博客网 时间:2024/06/10 09:29
http://blog.csdn.net/dahuaishu2010_/article/details/14103299
MediaCodec Demo
分类:
public class AvcEncoder {private MediaCodec mediaCodec;private BufferedOutputStream outputStream;public AvcEncoder() { File f = new File(Environment.getExternalStorageDirectory(), "Download/video_encoded.264"); touch (f); try { outputStream = new BufferedOutputStream(new FileOutputStream(f)); Log.i("AvcEncoder", "outputStream initialized"); } catch (Exception e){ e.printStackTrace(); } mediaCodec = MediaCodec.createEncoderByType("video/avc"); MediaFormat mediaFormat = MediaFormat.createVideoFormat("video/avc", 320, 240); mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, 125000); mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, 15); mediaFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420Planar); mediaFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 5); mediaCodec.configure(mediaFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE); mediaCodec.start();}public void close() { try { mediaCodec.stop(); mediaCodec.release(); outputStream.flush(); outputStream.close(); } catch (Exception e){ e.printStackTrace(); }}// called from Camera.setPreviewCallbackWithBuffer(...) in other classpublic void offerEncoder(byte[] input) { try { ByteBuffer[] inputBuffers = mediaCodec.getInputBuffers(); ByteBuffer[] outputBuffers = mediaCodec.getOutputBuffers(); int inputBufferIndex = mediaCodec.dequeueInputBuffer(-1); if (inputBufferIndex >= 0) { ByteBuffer inputBuffer = inputBuffers[inputBufferIndex]; inputBuffer.clear(); inputBuffer.put(input); mediaCodec.queueInputBuffer(inputBufferIndex, 0, input.length, 0, 0); } MediaCodec.BufferInfo bufferInfo = new MediaCodec.BufferInfo(); int outputBufferIndex = mediaCodec.dequeueOutputBuffer(bufferInfo,0); while (outputBufferIndex >= 0) { ByteBuffer outputBuffer = outputBuffers[outputBufferIndex]; byte[] outData = new byte[bufferInfo.size]; outputBuffer.get(outData); outputStream.write(outData, 0, outData.length); Log.i("AvcEncoder", outData.length + " bytes written"); mediaCodec.releaseOutputBuffer(outputBufferIndex, false); outputBufferIndex = mediaCodec.dequeueOutputBuffer(bufferInfo, 0); } } catch (Throwable t) { t.printStackTrace(); }}
- 顶
- 0
- 踩
0 0
- MediaCodec Demo
- MediaCodec Demo
- MediaCodec Demo
- MediaCodec Demo
- android 5.0 mediacodec demo
- Mediacodec
- MediaCodec
- Android中使用MediaCodec硬件解码,高效率得到YUV格式帧,快速保存JPEG图片(不使用OpenGL)(附Demo)
- MediaCodec Sample
- MediaCodec类
- MediaCodec类
- MediaCodec 实例
- MediaCodec总结
- Android MediaCodec
- Mediacodec序
- Android MediaCodec
- Android MediaCodec “Decoded”
- Android MediaCodec 使用例子
- Android-Eclipse 出现的问题汇总
- Android-Webrtc AECM for android
- 内存对齐
- powerdesigner 在连接线上显示关系名
- 第十四周项目一(4)——验证平衡二叉树相关算法
- MediaCodec Demo
- LR-Linux-ps详解
- Python处理命令行参数
- iOS设计模式——观察者模式
- 第16周项目4-英文单词的基数排序
- ViewDragHelper自定义view保存view的位置
- 第十六周项目1-(5)直接选择排序(6)堆排序
- 在windows下搭建pixhawk的开发环境
- Unity3D通过鼠标点击拖动获取屏幕范围