javacv-ffmpeg(六)性能提升

说明

我的性能提升大多都是取巧,也就是在业务或者逻辑上提高性能。
FFmpegFrameGrabber里是有同步代码块的,我没有试过去掉后会产生什么后果。主要是懒。
如果有人尝试请把结果回馈下,谢谢。

一、直播截图

因为同步代码块的问题,线程池线程不宜过多。
如果一直接受流信息并截图,消耗资源非常多8核的cpu支撑16-50路就不错了,看分辨率。

解决方案:看需求是否是多少秒一张图(这个可以配置管理)
加任务队列,
url连接后获取第一个关键帧,
保存图片后关闭,
更新下次执行时间,
任务重新加入队列。

2核的cpu支撑200-250路左右

二、视频录制

视频录制是没办法这么取巧的
但是视频录制主要资源消耗在录制时的解码编码

解决方案:不用默认或者设置的编解码
使用recordPacket方法

AVPacket pkt = null;
while (isStart) {
    
    
	pkt = grabber.grabPacket();
	recorder.recordPacket(pkt);
	org.bytedeco.ffmpeg.global.avcodec.av_packet_unref(pkt);
}

猜你喜欢

转载自blog.csdn.net/u013947963/article/details/103426088