Sah*_*jaj 4 encoding android opengl-es grafika android-mediacodec
我从Grafika开始了一个项目并对其进行了修改。我有一个框架(与原始框架没有太大区别),它可以从 中捕获预览Camera并同时以不同的分辨率将其连续编码为视频。
MediaCodec(用于编码)配置为使用COLOR_FormatSurface,以便我们能够渲染到getInputSurface()使用 GLES查询的 Surface 。
媒体格式设置为 MIME 类型 video/avc
对于大多数手机,此设置非常有效。
但对于一些手机,编码视频的色度值略微倾斜,底部有一个绿色条。
目前编码器表面的分辨率为 640x360。选择渲染到表面的 EGLConfig 支持 32 位 RGBA 格式。
该预览是完美的所有手机。
所以我假设应用程序端或操作系统框架端的编码器参数有问题。
它发生在 Android 4.4 上。- 不确定,是否可以在 5.* 上重现。
] 2
我会自己回答这个问题,以防其他人觉得它有用。
显然,此问题仅发生在少数特定芯片组上,例如MediaTek不支持16 种分辨率的非倍数的芯片组。就我而言,它是 640x360(其中高度是 8 的倍数)。为了部分解决它,我在应用程序代码中添加了一个检查,如果编码器是Omx.mtk,然后将编码器的宽度/高度重新配置为next multiple of 16,在我的情况下为 640x368(最接近要求,即 360p) .
对我来说,YouTube 播放器在两侧添加了一个轻微的消隐,这是我们可以用这些编码器做的最好的事情。
如果您不依赖任何第三方 API/播放器等
| 归档时间: |
|
| 查看次数: |
1732 次 |
| 最近记录: |