2013-05-01 302 views
3

我试图用android低级别媒体api实时解码h264 nals。
每个纳尔包含一个完整的框架,所以我希望后喂我输入输入和呼吁dequeueOutputBuffer它会“立即”(当然延迟litle)显示我的框架,但它没有。我看到第一帧和出队返回第一个缓冲区,只是为解码器提供第二个帧,此时应该渲染第二帧。帧编码与x264 zerolatency预设,所以没有b帧等...android mediacodec:实时解码h264 nals

我想,可能有一种方法来设置编码器立即渲染帧后,它得到它,但我找不到任何好文件/解释。 有什么建议吗?

+0

我遇到过同样的问题。我目前的理论是,似乎H.264没有任何“帧结束”标记。因此,解码器必须等待,直到它具有下一帧的数据才能完成解码并显示当前帧。对我而言,它只增加了大约25毫秒,但是我希望返回25毫秒。 – 2013-08-26 00:46:36

+0

即使使用I-Frame,我也有同样的问题。但我仍然没有解决方案。您是否成功实现了“实时”? – Soccertrash 2016-07-05 09:17:38

回答

0

仅仅因为帧被编码为零延迟设置并不意味着它们将被解码为零延迟。两个分开的东西。因此,根据编解码器级别(分辨率,比特率,帧率)和配置文件的不同,您可能需要解码多达16帧的h264视频以获取帧。

+0

感谢您的回答,但是从我的测试来看,当解码器与下一个解码器一起馈送时,无论延迟时间(20毫秒或10秒不变),帧都会显示,所以它与解码时间,但似乎是api的限制。 – Florian 2013-05-15 16:30:23