天天看點

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);
}