社区
Android
帖子详情
Android使用MediaCodec进行h264硬编码的问题
saliengu
2015-11-03 05:23:02
每次运行到 mediaCodec.configure(mediaFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE); 这句总会报异常,不知道哪位大神碰到过这种问题,跪求指点。
...全文
537
2
打赏
收藏
Android使用MediaCodec进行h264硬编码的问题
每次运行到 mediaCodec.configure(mediaFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE); 这句总会报异常,不知道哪位大神碰到过这种问题,跪求指点。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
aawc1144
2015-11-30
打赏
举报
回复
楼上无敌,谢谢指教
zhouxionger
2015-11-06
打赏
举报
回复
private MediaCodec mediaCodec; int m_width; int m_height; byte[] m_info = null; int key; private String type = "video/avc"; @SuppressLint("NewApi") public AvcEncoder(int width, int height, int framerate, int bitrate) { m_width = width; m_height = height; mediaCodec = MediaCodec.createEncoderByType(type); MediaFormat mediaFormat = MediaFormat.createVideoFormat(type, width, height); mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, bitrate); mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, framerate); mediaFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420SemiPlanar); mediaFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 10); mediaCodec.configure(mediaFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE); mediaCodec.start(); } @SuppressLint("NewApi") public void close() { try { mediaCodec.stop(); mediaCodec.release(); } catch (Exception e) { e.printStackTrace(); } } @SuppressLint("NewApi") public byte[] offerEncoder(byte[] input) { int count = 0; byte[] output = null; int pos = 0; // swapYV12toI420(input, yuv420, m_width, m_height); try { ByteBuffer[] inputBuffers = mediaCodec.getInputBuffers(); Log.i("inputBufferssize", "" + inputBuffers.length); ByteBuffer[] outputBuffers = mediaCodec.getOutputBuffers(); int inputBufferIndex = mediaCodec.dequeueInputBuffer(0); Log.i("AvcEncoder inputBufferIndex", inputBufferIndex + ""); 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 = 0; while (count <= 10) { outputBufferIndex = mediaCodec.dequeueOutputBuffer(bufferInfo, 10000); Log.i("AvcEncoder outputBufferIndex", outputBufferIndex + ""); if (outputBufferIndex == -1) { count++; } else { break; } } if (outputBufferIndex >= 0) { ByteBuffer outputBuffer = outputBuffers[outputBufferIndex]; byte[] outData = new byte[bufferInfo.size]; // Log.i("h264.size", outData.length + ""); output = new byte[outData.length]; outputBuffer.get(outData); if (m_info != null) { System.arraycopy(outData, 0, output, pos, outData.length); pos += outData.length; } else { ByteBuffer spsPpsBuffer = ByteBuffer.wrap(outData); if (spsPpsBuffer.getInt() == 0x00000001) { m_info = new byte[outData.length];// 第一帧数据 System.arraycopy(outData, 0, m_info, 0, outData.length); } } mediaCodec.releaseOutputBuffer(outputBufferIndex, false); mediaCodec.flush(); } int key = output[4] & 0x1F; if (key == 5) // key frame2 { System.arraycopy(output, 0, input, 0, pos); output = new byte[output.length + m_info.length]; System.arraycopy(m_info, 0, output, 0, m_info.length); System.arraycopy(input, 0, output, m_info.length, pos); pos += m_info.length; } } catch (Throwable t) { t.printStackTrace(); } return output; } 这是我在网上找的改了下,希望可以帮到你
android
MediaCodec
实现
h264
硬编解码全过程
MediaCodec
实现
h264
硬编解码全过程,视频数据从摄像头读出 yv12格式,转换为I420,投递给encoder,再从encoder取出编码后的
h264
数据投递给decoder后显示到surfaceView; 实现了udp将
h264
数据发送到指定主机,可通过vlc播放; 备有可以读取本地264文件流投递给解码器播放; 小米 4.4.2 测试通过.
Android
使用
MediaCodec
将摄像头采集的视频编码为
h264
主要为大家详细介绍了
Android
使用
MediaCodec
将摄像头采集的视频编码为
h264
,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Android
MediaCodec
硬解码
H264
Android
MediaCodec
硬解码
H264
,包括
h264
文件,以及另一个硬解码例子。
android
6.0
MediaCodec
H.264解码测试
在
android
6.0上测试
MediaCodec
的H.264硬解码,在多个硬件平台测试过,能正常播放,包含h.264文件
Android
MediaCodec
RTSP
H264
播放器客户端
Android
RTSP
H264
播放客户端。自己组包,喂给
Android
MediaCodec
解码器,实时播放直播流。史上最简单的demo。亲测在三星S8+,小米平板,华为平板,摩托罗拉手机可用。
Android
80,472
社区成员
91,384
社区内容
发帖
与我相关
我的任务
Android
移动平台 Android
复制链接
扫一扫
分享
社区描述
移动平台 Android
android
android-studio
androidx
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章