1. 延时测试方式
不要用vlc,不要用vlc,不要用vlc测试延迟,用web的flash插件测试
下图
或者输入视频流中添加一个时间戳和北京时间做对比
2. rtmp推流之后vlc能播放,flash播放器不能
在编码器上下文中添加pCodecCtx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER
pCodecCtx = avcodec_alloc_context3(pEncoder); // 创建编码器上下文
if (pCodecCtx == NULL) {
return HIAI_ERROR;
}
pCodecCtx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER; //全局参数
3. 推流延迟优化
可参考:https://blog.csdn.net/zsc09_leaf/article/details/16862839
不要用vlc,不要用vlc,不要用vlc测试延迟,用web的flash插件测试
可优化的地方:
- frame的高度和宽度,常用的有:720×480;1920×1080
- 编码质量:
av_opt_set(pCodecCtx->priv_data, "preset", "veryfast", 0); // 画面质量 ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、placebo 编码器质量
- tune参数
av_opt_set(pCodecCtx->priv_data, "tune", "zerolatency", 0);
- thread_out参数:
pCodecCtx->thread_count = 4; // 默认为8
这里用Atlas500,用tiny-yolov3,处理416×416的图像,用ffmpeg推流成720×480的flv视频流。可以实时处理(延迟2秒)8路1920×1080的rtsp h264编码的视频