5

我从Grafika开始了一个项目并对其进行了修改。我有一个框架(与原始框架没有太大不同),它从 中捕获预览Camera并以不同的分辨率同时将其连续编码为视频。

MediaCodec(用于编码)配置为使用COLOR_FormatSurface,以便我们能够渲染到getInputSurface()使用 GLES 查询的表面。

媒体格式设置为 MIME 类型video/avc

对于大多数手机,此设置完美运行。

但对于一些手机,编码视频的色度值略微倾斜,底部有一个绿色条。

目前,编码器表面的分辨率为 640x360。选择渲染到表面的 EGLConfig 支持 32 位 RGBA 格式。

预览在所有手机中都是完美的。

所以我假设在应用程序端或操作系统框架端的编码器参数有问题。

它发生在 Android 4.4 上。- 不确定,如果它可以在 5.* 上重现。

![绿条图像] 2

4

1 回答 1

5

我会为自己回答这个问题,以防其他人发现它有用。

显然,该问题仅出现在少数选择MediaTek的芯片组上,例如不支持非 16分辨率的倍数的芯片组。就我而言,它是 640x360(高度是 8 的倍数)。为了部分解决它,我在 App 代码中添加了一个检查,如果编码器是Omx.mtk,然后重新配置宽度/高度为的编码器,next multiple of 16在我的情况下是 640x368(最接近要求,即 360p) .

对我来说,YouTube 播放器在两侧添加了轻微的消隐,这是我们可以使用这些编码器做的最好的事情。

如果您不依赖任何第三方 API/播放器等

于 2016-01-22T11:26:09.753 回答