我开始了一个项目Grafika并对其进行了修改。我有一个框架(与原始框架没有太大不同),它可以捕获来自Camera
并同时以不同的分辨率将其连续编码为视频。
MediaCodec
(用于编码)配置为使用COLOR_FormatSurface
为了让我们能够渲染到使用查询的 SurfacegetInputSurface()
使用 GLES。
媒体格式设置为 MIME 类型video/avc
对于大多数手机来说,此设置非常有效。
但对于一些手机,编码视频的色度值略有倾斜,并且底部有一个绿色条。
目前编码器表面的分辨率为 640x360。
选择渲染到表面的 EGLConfig 支持 32 位 RGBA 格式。
The 预览 完美在所有手机中。
所以我假设应用程序端或操作系统框架端的编码器参数存在一些问题。
它发生在 Android 4.4 上。 - 不确定它是否可以在 5.* 上重现。
]2
我会为自己回答这个问题,以防其他人发现它有用。
显然,该问题仅发生在少数选定的芯片组上,例如MediaTek
那些不支持的非 16 的倍数决议。在我的例子中,它是 640x360(其中高度是 8 的倍数)。为了部分解决这个问题,我在应用程序代码中添加了一个检查,如果编码器是Omx.mtk,然后重新配置编码器,宽度/高度为next multiple of 16
,在我的例子中,结果为 640x368(最接近要求,即 360p)。
对我来说,YouTube 播放器在两侧添加了轻微的消隐,这是我们可以使用这些编码器实现的最佳效果。
如果您不依赖任何第三方 API/播放器等
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)