Android 录屏时控制帧率

Android 录屏时通常使用 MediaCodec 做编码器,MediaCodec 会创建一个 Surface 提供给 VirtualDisplay 填内容。通常,Android系统系统刷新速率是60fps,硬编码成的h264文件帧率通常是30fps。如果想调整这个帧率怎么办呢?

文章 https://stackoverflow.com/questions/31527134/controlling-frame-rate-of-virtualdisplay 进行了讨论,结论就是不能在MediaCodec获取到的buffer里减数据,因为拿到的已经是硬编码的h264数据了;得从源头着手,源头就是 virtualdisplay。但是 virtualdisplay没有控制帧率的地方,那么我们就不能用 MediaCodec 的 Surface了,得自己创建一个surface,从这个surface得到帧的原始数据,然后可以剔除一些帧,达到降帧的目的。

文章 https://bigflake.com/mediacodec/EncodeAndMuxTest.java.txt 就是自己创建一个 OpenGL Surface的办法,把这样一个Surface传给virtualdisplay应该就能控制帧率了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容