我正在尝试使用Galaxy S3中的mediacodec解码来自WIFI相机的h264实时流,视频播放正常,但是似乎mediacodec低级别始终会缓冲1秒钟的视频帧,只有在新的NAL单元到达时才能解码新帧。这导致了大约1秒的延迟。
当调用
当调用
MediaCodec.createDecoderByType(“video/avc”);
时,我可以从logcat中看到分配了22个缓冲区。01-04 15:39:02.799: I/ExtendedCodec(13374): Smoothstreaming Enabled
01-04 15:39:02.809: I/ACodec(13374): [OMX.qcom.video.decoder.avc] Now Loaded->Idle
01-04 15:39:02.809: I/ACodec(13374): [OMX.qcom.video.decoder.avc] Allocating 22 buffers from a native window of size 245760 on output port
01-04 15:39:02.889: D/DecodeActivity(13374): Decoder started at --- 1388867942894
01-04 15:39:02.889: I/ACodec(13374): [OMX.qcom.video.decoder.avc] Now Idle->Executing
01-04 15:39:03.019: I/ACodec(13374): [OMX.qcom.video.decoder.avc] Now Executing
我可以看到在我从解码器中获取任何帧之前,大约需要推送16个NAL单元。
我的问题是,为什么会出现视频缓冲?如果这是问题的原因,有没有办法尝试分配更少的缓冲区。是否有任何方式可以减少视频缓冲?