android中MediaCodec硬编码中关键帧间隔时间设置问题
来源:互联网 发布:amf数据分析器下载 编辑:程序博客网 时间:2024/06/08 06:17
在MediaCodec硬编码中设置I关键帧时间间隔,在API中是这么设置的
mMediaCodec = MediaCodec.createByCodecName(debugger.getEncoderName());MediaFormat mediaFormat = MediaFormat.createVideoFormat("video/avc", mQuality.resX, mQuality.resY);mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, mQuality.bitrate);mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, mQuality.framerate);mediaFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT,debugger.getEncoderColorFormat());mediaFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 1);//设置1秒的时间,不成功mediaFormat.setInteger("profile", 8); // Profile HIGH //好像也不行mediaFormat.setInteger("level", 0x200); // Level 3.1 //好像也不行mMediaCodec.configure(mediaFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);mMediaCodec.start();
设置KEY_I_FRAME_INTERVAL为1秒,但查看输出中发现,时间间隔很长,我的华为mate9时间间隔为36秒的时间。不知道为什么。。。。。。。。。。。。。。在一篇文章中《无法控制MediaCodec输出关键帧解决方案》地址为:http://www.jianshu.com/p/175d1e4ffaad中提到“使用MediaCodec.createInputSurface()方法获取输入Surface,再通过Opengl渲染后喂给MediaCodec才能真正控制关键帧的数量”但改用这种方法后,还是无法控制关键帧间隔。还是不知道为什么。。。。。。。。。。。。。。。。。。在看EaysPusher程序源码中发现,它的解决方案是:在获取到编码器输出数据后,每隔1秒的时间设置参数请求if (System.currentTimeMillis() - timeStamp >= 1000) {//1000毫秒后,设置参数timeStamp = System.currentTimeMillis();if (Build.VERSION.SDK_INT >= 23) {Bundle params = new Bundle();params.putInt(MediaCodec.PARAMETER_KEY_REQUEST_SYNC_FRAME, 0);mMediaCodec.setParameters(params);}}
阅读全文
2 0
- android中MediaCodec硬编码中关键帧间隔时间设置问题
- android硬编码h264-MediaCodec
- android硬编码h264-MediaCodec
- android硬编码h264-MediaCodec
- android硬编码h264-MediaCodec
- android硬编码h264-MediaCodec
- android下MediaCodec硬编码(转)
- android硬编码h264——MediaCodec
- Android 利用MediaCodec 实现硬编码 h264
- MediaCodec 硬编码 h264
- 【Android】使用MediaCodec硬编码实现视频直播推流端(一)
- 【Android】使用MediaCodec硬编码实现视频直播推流端(一)
- 【Android】使用MediaCodec硬编码实现视频直播推流端(一)
- 【Android】使用MediaCodec硬编码实现视频直播推流端(一)
- Android中使用MediaCodec视频编码异步实现
- Android中MediaCodec的使用
- Android MediaCodec 硬编码器封装
- android利用MediaCodec硬解码
- java实现redis连接
- LintCode 解题记录 17.5.15 (tag: 哈希表)
- Cordova用插件时注意事项,不然,插件调用不到!
- GBDT和随机森林的区别
- #define宏定义中的#,##,@#,\
- android中MediaCodec硬编码中关键帧间隔时间设置问题
- Linux常用命令——关机重启命令
- Xshell ssh 长时间不掉线设置
- mysql负载均衡(mariadb+haporxy)
- batch normalization论文
- 串口读取数据
- android开源系列:CircleImageView自定义圆形控件的使用
- Java tif多页文件转jpg问题,Decoding of old style JPEG-in-TIFF data is not supported问题
- 安卓7.0的适配---uri更改和安装apk