ffmpegにフレームをドロップしてメモリ使用量を減らすように指示しますか?
を使用して、MJPEGからMPEG2にセキュリティカメラのリアルタイム映像をトランスコードしていffmpegます。 残念ながら、トランスコーディングを実行するマシンは実際には対応できません(100%のCPU使用率)が、それでも「十分」であり、時々フレームがドロップされることはありません。しかし、何らかの理由ffmpegでフレームがドロップされないため、プロセスが着信フレームに遅れてメモリ使用量が増加し続け、マシンがメモリ不足になり、ビデオがひどく破損し始めます。 ffmpegフレームをより積極的にドロップするように指示する方法はありますか?メモリ使用量が1.9GBに達すると問題が発生するため、メモリが1.5GBを超えるとmonitプロセスを再起動しようとしましたが、10分ごとに再起動され、各トランスコードされたファイルの推奨15分長が壊れます。 これは私が使用しているコマンドです: ffmpeg -overrun_nonfatal 1 -y -i udp://1.2.3.4 -c mpeg2video -b:v 2M -vf transpose=2 -preset ultrafast -an -r 30 out.mkv マンページには、-rオプションをフレームをドロップする出力オプションとして使用できると書かれていますが、私はこれを行っていますが、入力ストリームに追いつくためにフレームをドロップするのではなく、出力フレームレート(ここでは30fps)に一致するようにフレームをドロップするだけです。 この-vsyncオプションは、バッファリングを最小化するのではなく、フレームレートを一致させようとして、同様のことを行うようにも見えます。 -frame_drop_threshold より有望に見えますが、これは、リアルタイムエンコーディングに追いつくのではなく、タイムスタンプに追いつくためにフレームをドロップすることについてのようです。 私が使用できる他のオプションはありffmpegますか?これはリアルタイム/ストリーミング/低遅延オプションにあると思いますが、何も見つからないようです!