説明
私のパフォーマンスの改善のほとんどは、ビジネスまたはロジックのパフォーマンスを改善するためのトリックです。
FFmpegFrameGrabberに同期コードブロックがあり、それを削除した後の結果を試していません。主に怠惰です。
誰かが試みたら、結果を返してください、ありがとう。
1.ライブスクリーンショット
コードブロックの同期の問題があるため、スレッドプールスレッドは多すぎないようにする必要があります。
ストリーム情報を受信してスクリーンショットを撮っている場合は、解像度にもよりますが、多くのリソースを消費し、16〜50チャネルをサポートする8コアCPUが適しています。
解決策:要件が1秒あたりの画像(これは構成および管理可能)
とタスクキューであるかどうかを確認し、
URL接続後に最初のキーフレームを取得し
、画像を保存して閉じ
、次の実行時間を更新して、
再度追加しますキューへのタスク。
2コアCPUは約200〜250の道路をサポートします
2、ビデオ録画
ビデオ録画はそれほど難しいことではありませんが
、ビデオ録画の主なリソース消費は、録画中のデコードとエンコードです。
解決策:デフォルトなしで
recordPacketメソッドを使用するか、コーデックを設定します
AVPacket pkt = null;
while (isStart) {
pkt = grabber.grabPacket();
recorder.recordPacket(pkt);
org.bytedeco.ffmpeg.global.avcodec.av_packet_unref(pkt);
}