我正在尝试使用Android 6.0的MediaCodec将H264实时编码成流,并实现低延迟。从编码器中有大约6帧的延迟,我想知道如何减少。
代码来自screenrecord.cpp。
部分代码如下:
编码器以320x480 60 fps的屏幕表面为输入,并通过dequeueOutputBuffer()输出流数据。大约有6帧被送到编码器,其数据不会立即由dequeueOutputBuffer()返回。换句话说,当第N帧被输入时,编码器输出第(N-6)帧的数据。
问题1 - 如何减少在编码器中缓冲的帧数?是否可能在第N帧被输入后立即输出第N帧?
附注:问题1与此问题相同。(目前没有好的解决方案)
当表面图形内容突然变得静态时,不再向编码器提供更多帧。奇怪的是,最新的6帧数据不能按照它们的“正常速度”输出,它们在大约10秒钟内缓慢地输出。
问题2 - 如何在突然停止向编码器提供数据时减少最新帧的延迟输出?
代码来自screenrecord.cpp。
部分代码如下:
while (true) {
encoder->dequeueOutputBuffer(&bufIndex);
}
编码器以320x480 60 fps的屏幕表面为输入,并通过dequeueOutputBuffer()输出流数据。大约有6帧被送到编码器,其数据不会立即由dequeueOutputBuffer()返回。换句话说,当第N帧被输入时,编码器输出第(N-6)帧的数据。
问题1 - 如何减少在编码器中缓冲的帧数?是否可能在第N帧被输入后立即输出第N帧?
附注:问题1与此问题相同。(目前没有好的解决方案)
当表面图形内容突然变得静态时,不再向编码器提供更多帧。奇怪的是,最新的6帧数据不能按照它们的“正常速度”输出,它们在大约10秒钟内缓慢地输出。
问题2 - 如何在突然停止向编码器提供数据时减少最新帧的延迟输出?