https://github.com/AnyRTC/anyRTC-RTMP-OpenSource/issues/49
V_H264Encoder::RequestKeyFrame
Android 6.0推送全是I 帧 或者全是P帧 急急急 #49
Open
jinlong0813 opened this Issue on Nov 9, 2016 · 9 comments
Comments
Assignees
No one assigned
Labels
None yet
Projects
None yet
Milestone
No milestone
5 participants
jinlong0813 commented on Nov 9, 2016
AnyRTC团队,我在测试Android端推送的时候使用MediaCodec硬件编码,遇到在三星S6、nexus5(都是Android6.0)上一直只输出 I 帧,没有P帧,在三星note3、荣耀1、红米note1(Android5.0及以下版本)上是正常的,将nexus5从Android6.0降到5.0也正常了。 |
Contributor
DyncEric commented on Nov 11, 2016
这个问题我们正在努力复现,多谢 |
Contributor
DyncEric commented on Nov 17, 2016
这个问题目前来看没有特别好的解决办法,可以暂时规避掉,MediaCodec编码器如果可以定时如3s输出关键帧,则可以注释掉这行代码。 |
jinlong0813 commented on Nov 17, 2016
目前确认是所有Android 6.0上都有这个问题。 按你说的,注释掉这句代码,Android 6.0上就只有一开始有个I帧,后面一直没有I帧了,全是P帧, MediaFormat.KEY_I_FRAME_INTERVAL设置不生效。Android 4、Android 5版本上这个设置都是生效的。 所以现在Android 6.0上要么只有第一个I帧,后面全是P帧, 要么全是I帧没有P帧, 这都不正常啊。 |
Contributor
mtdxc commented on Nov 20, 2016
可以用软件方式强制让它生成关键帧么…… |
jinlong0813 commented on Nov 22, 2016
jinlong0813 changed the title from Android推送部分机型全是关键帧没有P帧 to Android 6.0推送全是I 帧 或者全是P帧 急急急 on Nov 22, 2016
xiaoqunSun commented on Nov 29, 2016
印象中webrtc的编码函数是可以设置生成关键帧的。 |
jinlong0813 commented on Nov 29, 2016
@xiaoqunSun KEY_I_FRAME_INTERVAL设置成0,用什么方式强制获取I帧,是MediaCodec.PARAMETER_KEY_REQUEST_SYNC_FRAME吗? |
Contributor
mtdxc commented on Nov 30, 2016
V_H264Encoder::RequestKeyFrame |
liuxinpeister commented on Mar 30, 2017
我也碰到这个问题,最后找到的问题原因是colorformat不正确,在Android6.0上,如果使用的是硬编码器,我的是qcom的编码器,需要使用YUV420SP的colorformat,才能正常出关键帧,使用YUV420P不行。机型:小米4。 |