【发布时间】:2016-09-26 07:29:07
【问题描述】:
当我尝试使用 android MediaCodec 输出 h.264 视频时遇到问题。我从 onPreviewFrame 获取帧数据,然后将其提供给 MediaCodec,并使用 OpenGL 在 GLSurfaceView 上绘制帧。它可以在某些设备和操作系统版本上正常运行,例如带有 5.0 系统的三星 s5、带有 5.1 系统的三星 note4 和一些 android 4.4 设备。
但是当我尝试在其他设备上运行此应用程序时,例如带有 android 6.0 的三星 s6、带有 android 6.0 和 5.0 设备的三星 note5,出现了问题。我在 GLSurfaceView 上绘制的图像是正确且正常的,但我弄错了似乎没有颜色或颜色错误的视频。
我试图找到答案,我终于意识到这可能是由 MediaCodec 接受的颜色格式的差异引起的。在我的程序中,我假设 mediaCodec 可以接受 YUV420SP,所以我将 nv21 i420SemiPlanar 转换并提供给 MediaCodec .我猜mediaCodec的颜色格式是解决问题的关键,但这是真的吗?为什么不同设备和操作系统版本上的mediaCodec会有如此大的差异?
有人遇到同样的问题吗?
我可以做些什么来避免这个问题?
【问题讨论】:
标签: android