【发布时间】:2014-01-04 20:48:38
【问题描述】:
我正在尝试通过 Galaxy S3 中的 mdiacodec 解码来自 WIFI 摄像头的 h264 实时流,视频播放正常,但似乎 mediacode 低级别总是缓冲 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 单元推入解码器,然后才能输出任何帧。
我的问题是为什么这个视频缓冲?如果这是问题,我可以尝试分配更少的缓冲区。无论如何我可以减少这个视频缓冲吗?
【问题讨论】:
标签: android h.264 rtsp rtp android-mediacodec