android mediacodec:实时解码h264 nals

Flo*_*ian 5 media android real-time codec h.264

我正在尝试使用 android 低级媒体 api 实时解码 h264 nals。
每个 nal 都包含一个完整的帧,所以我希望在用我的 nal 输入输入并调用dequeueOutputBuffer它之后会“立即”(当然有一点延迟)显示我的帧,但它没有。我看到第一帧,出队仅在向解码器提供第二个缓冲区后才返回第一个缓冲区,第二个缓冲区此时应呈现第二个帧。帧使用 x264 的零延迟预设进行编码,因此没有 b 帧等...

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

av5*_*501 0

仅仅因为帧以零延迟设置进行编码并不意味着它们将以零延迟进行解码。两件事。因此,根据编解码器级别(分辨率、比特率、帧率)和配置文件,您可能需要解码最多 16 帧的 h264 视频才能获取一帧。