我使用ffmpeg与h264 build和javacv在android上将视频从摄像头传输到rtmp服务器。 我试图设置所有可能的视频帧率和比特率,设置预设超快,但我仍然有稳定的5秒延迟。 如果我使用android mediarecorder将mpegts流与rtmp一起发送到服务器,我只有2秒延迟,如果我在客户端(ffmpeg)上使用-fflags nobuffer选项,则视频会立即出现。
我不知道android ffmpeg如何减少这种延迟。 代码如下:
recorder = new FFmpegFrameRecorder(ffmpeg_link, imageWidth, imageHeight, 1);
recorder.setFormat("flv");
recorder.setFrameRate(frameRate);
recorder.setVideoBitrate(900*1000);
recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
recorder.setVideoOption("preset", "ultrafast");
recorder.setVideoOption("tune", "zerolatency");
recorder.setVideoOption("fflags", "nobuffer");
recorder.setVideoOption("analyzeduration", "0");