Most video encoders apply temporal compression i.e. most frames only store the difference in image content relative to other frames, thus saving storage space, while a few frames store the whole image. The frames with whole pictures are called key frames since they are required in order to reconstruct the whole picture of frames which only store differences. IDR frame in H264 stream denotes a keyframe.
Your code tells ffmpeg to generate a H264 video stream using the x264 encoder, and the options below are used by the encoder to decide keyframe placement.
keyint=24 tells x264 to forcibly generate a keyframe 24 frames after the last keyframe.
min-keyint=24 sets the minimum keyframe distance. The encoder may decide to place a keyframe on its own even if
keyint # of frames haven't elapsed if it comes across an image which is more efficient to store as a complete picture rather than as a set of differences.
min-keyint tells the encoder to never do this if the distance isn't at least
24. Since in this case keyint is the same value as min-keyint, all KFs will be 24 frames apart.
no-scenecut - scenecut is the value used by the encoder to calculate if it should force a keyframe if min-keyint allows it to. It can range from 0-100.
no-scenecut tells the encoder to skip this evaluation.