如何减少MediaCodec H264编码器延迟

乔普

我正在尝试使用Android6.0的MediaCodec将h264实时低延迟地编码为流。编码器大约有6帧延迟,我想知道如何减少

代码来自screenrecord.cpp

零件代码为:

while (true) {
     encoder->dequeueOutputBuffer(&bufIndex);
}

编码器由屏幕表面以320x480 60 fps的速率进行馈送,并通过dequeueOutputBuffer()输出流数据。dequeueOutputBuffer()不会立即返回数据到编码器的大约6帧。换句话说,当馈送第N帧时,编码器输出第(N-6)帧的数据。

问题1-如何减少编码器中缓冲的帧?在第N帧馈入编码器后,是否可以输出第N帧?

PS:问题1与这个问题相同(尚无好的解决方案)。

当表面图形内容突然变为静态时,不再有帧馈送到编码器。奇怪的是,最新的6帧数据无法以其“正常速度”输出,它们会在约10秒内缓慢输出。

问题2-突然没有数据输入编码器时,如何减少最新帧输出的延迟?

淡淡的

缓冲由视频编码器确定。除了选择不以这种方式运行的视频编码器外,我认为您没有太多可做的事情。

如果您不希望输出暂停,最简单的解决方法是不暂停输入。继续输入相同的帧。编码器应识别出什么都没有改变,并且几乎不会产生输出。screenrecord无法以这种方式工作-它只是在获取帧时提交帧-因此您必须添加超时以重新提交帧。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MediaCodec H264编码器在Snapdragon 800设备上不起作用

如何播放MediaCodec编码器产生的原始h264?

使用Live555从连接到H264编码器的IP摄像机流式传输实时视频

如何使用NVidia NVEnc硬件编码器通过UDP流H.264视频?

如何调试为什么Mac OS不使用硬件H264编码器

MediaCodec.dequeueOutputBuffer在Android上对h264进行编码时花费很长时间

如何在Windows中使用H264视频编码器MFT编码位图

FFmpeg中的不同h264编码器

使用AVAssetWriter重新编码H264 mov文件-如何设置帧频?

关于fmp4编码,如何填充mdat框和H264帧?

MediaCodec无法解码H264编码的视频数据

使用AMD H264编码器MFT冲洗掉颜色(颜色范围问题)

如何在Windows Media Foundation中使用“ H.264 UVC 1.5摄像机编码器”

ffmpeg-如何为h264_nvenc编码器配置ref参数

减少自动编码器的损耗

如何将h264编码的MediaRecorder流传递给Chrome中的MediaSource?

Media Foundation的H264编码器中的SPS和PPS(也称为dwSequenceHeader)

如何在不使用MediaExtractor的情况下为H264使用MediaCodec

如何获取MediaCodec编码器的步幅和Y平面对齐值

无法在Intel x86设备,Android 4.2.2上使用H264(视频/ AVC)编码器

如何通过UVC支持硬件编码的H264

如何使用MediaCodec编码器获取RGB颜色格式的帧

H264编码器错误

各种ffmpeg h264编码器的差异

Media Foundation h264编码器性能不佳

Android Mediacodec 编码 h264 并在不同平台(Android、iOS、Web)中解码

我正在使用 MediaCodec 实现原始的 h264 播放器

使用华为MediaCodec解码H264渲染TextureView严重延迟

如何设置H264 NVENC编码参数输出高质量视频流?