Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Android 6.0推送全是I 帧 或者全是P帧 急急急 #49

Open
jinlong0813 opened this issue Nov 9, 2016 · 9 comments
Open

Android 6.0推送全是I 帧 或者全是P帧 急急急 #49

jinlong0813 opened this issue Nov 9, 2016 · 9 comments

Comments

@jinlong0813
Copy link

AnyRTC团队,我在测试Android端推送的时候使用MediaCodec硬件编码,遇到在三星S6、nexus5(都是Android6.0)上一直只输出 I 帧,没有P帧,在三星note3、荣耀1、红米note1(Android5.0及以下版本)上是正常的,将nexus5从Android6.0降到5.0也正常了。
调试时发现只要执行过b.putInt(MediaCodec.PARAMETER_KEY_REQUEST_SYNC_FRAME, 0); 如上两个6.0的机型就再也不输出P帧了,全部都是关键帧。5.0/4.4的机型执行一次输出一个I 帧,不执行就输出P帧,很正常。
本人没找到解决方案,望各位专业大牛帮解决,我的联系QQ:420306380
谢谢。

@DyncEric
Copy link
Contributor

这个问题我们正在努力复现,多谢

@DyncEric
Copy link
Contributor

这个问题目前来看没有特别好的解决办法,可以暂时规避掉,MediaCodec编码器如果可以定时如3s输出关键帧,则可以注释掉这行代码。

@jinlong0813
Copy link
Author

目前确认是所有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帧, 这都不正常啊。

@mtdxc
Copy link
Contributor

mtdxc commented Nov 19, 2016

可以用软件方式强制让它生成关键帧么……

@jinlong0813
Copy link
Author

@DyncEric @mtdxc 知道怎么破吗,这个问题还比较严重啊

@jinlong0813 jinlong0813 changed the title Android推送部分机型全是关键帧没有P帧 Android 6.0推送全是I 帧 或者全是P帧 急急急 Nov 22, 2016
@xiaoqunSun
Copy link

印象中webrtc的编码函数是可以设置生成关键帧的。
我给的建议是降 MediaFormat.KEY_I_FRAME_INTERVAL设成0,
然后自己数帧,每过几帧就强制编码器生成关键帧
也就是说自己实现KEY_I_FRAME_INTERVAL逻辑

@jinlong0813
Copy link
Author

@xiaoqunSun KEY_I_FRAME_INTERVAL设置成0,用什么方式强制获取I帧,是MediaCodec.PARAMETER_KEY_REQUEST_SYNC_FRAME吗?

@mtdxc
Copy link
Contributor

mtdxc commented Nov 30, 2016

V_H264Encoder::RequestKeyFrame

@liuxinpeister
Copy link

我也碰到这个问题,最后找到的问题原因是colorformat不正确,在Android6.0上,如果使用的是硬编码器,我的是qcom的编码器,需要使用YUV420SP的colorformat,才能正常出关键帧,使用YUV420P不行。机型:小米4。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants