我正在使用MediaCodec
解码用ffmpeg编码的h264数据包。当我用ffmpeg解码时,帧显示正常。但是,当我用MediaCodec
硬件解码器解码时,我有时会在帧的中间出现黑条。只有在编码比特率设置得足够高(例如4000000以上)时才会发生这种情况,这样任何给定的AVPacket
大小都会超过95000左右。似乎MediaCodec
(或底层解码器)正在截断帧。不幸的是,我需要质量,所以不能拒绝比特率。我已经确认这些框架没有在其他地方被截断,我尝试将MediaFormat.KEY_MAX_INPUT_SIZE
设置为更高的值。
有没有人遇到过这个问题,或者知道我可以解决这个问题的方法吗?
我附加了一个随机像素的图像,我在OpenGL中渲染,然后在我的Galaxy S4上解码。
答案 0 :(得分:1)
我弄清楚问题是什么。我不得不增加一个传入的套接字缓冲区,以便接收所有的数据包数据。由于我使用的是Live 555 RTSP客户端,因此我使用了increaseReceiveBufferTo()
功能。