user22984: I am absolutely new to video processing, I am building a video streaming site and worked with ffmpeg to generate the formats I need for ShakaPackager.
Sadly I don't understand some of the options being provided, especially keyInt, min-keyint and no-scenecut.
Below you will find the code I use to generate the required formats for my videos.
ffmpeg -y -i ${1} -c:a aac -ac 2 -ab 256k -ar 48000 -c:v libx264 -x264opts "keyint=24:min-keyint=24:no-scenecut" -b:v 1500k -maxrate 1500k -bufsize 1000k -vf "scale=-2:720" "${2}/${3}720.mp4"

I did a bit of research and they talked about IDR-frames I don't even understand those, maybe my needs go way more than that?

user1871: 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.
-x264opts "keyint=24:min-keyint=24:no-scenecut"

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.

user20528: The frames in your H.264 video are grouped into units called GOPs (Group Of Pictures). Inside these GOPs frames are classified into three types:

I-frame: frame that stores the whole picture
P-frame: frame that stores only the changes between the current picture and previous ones
B-frame: frame that stores differences with previous or future pictures

Additionally, I-frames can be classified as IDR frames and non-IDR frames. The difference is that frames following an IDR frame cannot reference any frame that comes before the IDR frame, while in the case of a non-IDR frame there are no limitations.
Every GOP starts with an I-frame, also called a keyframe, but may contain more than one. To create further confusion, a GOP can start with an IDR frame or with a non-IDR frame. This means that frames in the GOP can sometimes refer to previous GOPs (in this case the GOP is said to be "open"), and sometimes not (in this case it's closed).
It's common to see the structure of a GOP represented as in this example: IBBBPBBBPBBBI. Here the length of the the GOP is 12 frames, with 3 B-frames between each P-frame.
Now your questions:

keyint specifies the maximum length of the GOP, so the maximum interval between each keyframe, which remember that can be either an IDR frame or a non-IDR frame. I'm not completely sure but I think that by default ffmpeg will require every I-frame to be an IDR frame, so in practice you can use the terms IDR frame and I-frame interchangeably
min-keyint specifies the minimum length of the GOP. This is because the encoder might decide that it makes sense to add a keyframe before the keyint value, so you can put a limit 
no-scenecut. When the encoder determines that there's been a scene cut, it may decide to insert an additional I-frame. The issue is that I-frames are very expensive if compared to other frame types, so when encoding for streaming you want to disable it.

A couple of other related parameters:

bframes specifies the number of consecutive B-frames
ref specifies the number of references frames that are used when encoding. It means that when encoding a picture, ref previous frames are looked at for encoding the current frame


22984: <p>I am absolutely new to video processing, I am building a video streaming site and worked with ffmpeg to generate the formats I need for ShakaPackager.</p>

<p>Sadly I don't understand some of the options being provided, especially <code>keyInt</code>, <code>min-keyint</code> and <code>no-scenecut</code>.</p>

<p>Below you will find the code I use to generate the required formats for my videos.</p>

<pre><code>ffmpeg -y -i ${1} -c:a aac -ac 2 -ab 256k -ar 48000 -c:v libx264 -x264opts "keyint=24:min-keyint=24:no-scenecut" -b:v 1500k -maxrate 1500k -bufsize 1000k -vf "scale=-2:720" "${2}/${3}720.mp4"
</code></pre>

<p>I did a bit of research and they talked about <code>IDR-frames</code> I don't even understand those, maybe my needs go way more than that?</p>
 1871: <p>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.</p>

<p>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.</p>

<pre><code>-x264opts "keyint=24:min-keyint=24:no-scenecut"
</code></pre>

<p><code>keyint=24</code> tells x264 to forcibly generate a keyframe 24 frames after the last keyframe.</p>

<p><code>min-keyint=24</code> sets the minimum keyframe distance. The encoder may decide to place a keyframe on its own even if <code>keyint</code> # 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. <code>min-keyint</code> tells the encoder to never do this if the distance isn't at least <code>24</code>. Since in this case keyint is the same value as min-keyint, all KFs will be 24 frames apart.</p>

<p><code>no-scenecut</code> - 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. <code>no-scenecut</code> tells the encoder to skip this evaluation.</p>
 20528: <p>The frames in your H.264 video are grouped into units called <code>GOP</code>s (Group Of Pictures). Inside these <code>GOP</code>s frames are classified into three types:</p>

<ul>
<li><code>I-frame</code>: frame that stores the whole picture</li>
<li><code>P-frame</code>: frame that stores only the changes between the current picture and previous ones</li>
<li><code>B-frame</code>: frame that stores differences with previous or future pictures</li>
</ul>

<p>Additionally, I-frames can be classified as <code>IDR</code> frames and <code>non-IDR</code> frames. The difference is that frames following an <code>IDR</code> frame cannot reference any frame that comes before the <code>IDR</code> frame, while in the case of a <code>non-IDR</code> frame there are no limitations.</p>

<p>Every <code>GOP</code> starts with an I-frame, also called a <code>keyframe</code>, but may contain <em>more than one</em>. To create further confusion, a <code>GOP</code> can start with an <code>IDR</code> frame <em>or</em> with a <code>non-IDR</code> frame. This means that frames in the <code>GOP</code> can sometimes refer to previous <code>GOP</code>s (in this case the <code>GOP</code> is said to be "open"), and sometimes not (in this case it's closed).</p>

<p>It's common to see the structure of a <code>GOP</code> represented as in this example: <code>IBBBPBBBPBBBI</code>. Here the length of the the <code>GOP</code> is 12 frames, with 3 B-frames between each P-frame.</p>

<p>Now your questions:</p>

<ul>
<li><code>keyint</code> specifies the <em>maximum</em> length of the <code>GOP</code>, so the maximum interval between each keyframe, which remember that can be either an IDR frame or a non-IDR frame. I'm not completely sure but I think that by default ffmpeg will require every I-frame to be an IDR frame, so in practice you can use the terms IDR frame and I-frame interchangeably</li>
<li><code>min-keyint</code> specifies the <em>minimum</em> length of the <code>GOP</code>. This is because the encoder might decide that it makes sense to add a keyframe before the <code>keyint</code> value, so you can put a limit </li>
<li><code>no-scenecut</code>. When the encoder determines that there's been a scene cut, it may decide to insert an additional I-frame. The issue is that I-frames are very expensive if compared to other frame types, so when encoding for streaming you want to disable it.</li>
</ul>

<p>A couple of other related parameters:</p>

<ul>
<li><code>bframes</code> specifies the number of consecutive B-frames</li>
<li><code>ref</code> specifies the number of references frames that are used when encoding. It means that when encoding a picture, <code>ref</code> previous frames are looked at for encoding the current frame</li>
</ul>
