Android MediaCodec h.264解码表面模式颜色条带

时间:2017-01-09 09:52:04

标签: android opengl-es h.264 mediacodec surface

我正在使用Android的MediaCodec API来解码和播放实时和原始的H.264视频流。我的目标设备是PC,在Android-x86 6.0上运行。 PC运行在Intel®Celeron®处理器N2930 CPU上。

当我将解码器设置为曲面模式并将视频渲染为TextureView时,我遇到了一些色带问题。

当我设置解码器使用ByteBuffer模式,然后将解码的视频帧保存到文件,然后在另一台计算机上打开文件时,我发现视频帧没有色带问题。

耗尽了想法,然后我尝试实现自己的OpenGL ES视图来渲染视频。得到它的工作,但色带仍然存在。然后我使用GLES20.glReadPixels()从OpenGL ES视图渲染器保存解码的帧,当我在另一台计算机上打开这些帧时,我看到帧中的颜色条带。

更多观察: 1)我使用捆绑的视频播放器(视频播放器)和MX播放器播放一些视频文件。捆绑的视频播放器和MX播放器(在硬件解码模式下)都遇到了相同的色带问题。

2)在MX Player中以SW解码模式播放显示没有色带。

尝试在网上提供的几乎所有建议都无济于事。请帮忙。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

通过在ByteBuffer(软件)模式下使用MediaCodec来管理以解决问题。