3

MediaCodec用来解码用 ffmpeg 编码的 h264 数据包。当我使用 ffmpeg 解码时,帧显示正常。但是,当我使用MediaCodec硬件解码器进行解码时,有时会在帧中间出现黑条。仅当编码比特率设置得足够高(例如超过 4000000)以使任何给定AVPacket大小都高于 95000 左右时,才会发生这种情况。似乎MediaCodec(或底层解码器)正在截断帧。不幸的是,我需要质量,所以比特率不能被拒绝。我已经验证帧没有在其他地方被截断,并且我尝试设置MediaFormat.KEY_MAX_INPUT_SIZE为更高的值。

有没有人遇到过这个问题或知道我可以解决它的方法?

我附上了我在 OpenGL 中渲染然后在我的 Galaxy S4 上解码的随机像素图像。

一只忙碌的猫

4

1 回答 1

2

我弄清楚了问题所在。我必须增加传入的套接字缓冲区才能接收所有数据包数据。由于我使用的是 Live 555 RTSP 客户端,increaseReceiveBufferTo()因此我使用了该功能。

于 2013-10-15T20:12:25.987 回答