user30461: I have a MKV video and I want to cut from seconds 3.3 to 22:07 minutes, but I can't cut at that start timing because there isn't a keyframe. How can I bypass that?

user4943: While in many cases it is impossible, there are cases where it may be theoretically possible. I will ignore here cases where no keyframes exist, since your question clearly stated that you are dealing with the codec with keyframe, but codecs differ in whether they allow keyframes in specific locations, or a keyframe may appear at any point.
If you have the latter, it would be possible to set up a case like the following:

Here the green frames are Key Frames, and the red is the new keyframe that will be created. You can see that most blocks can be copied as is, without reencoding, that is because every frame that follows the keyframe that can be just copied, can just be copied itself. We can also simply drop the unneeded frames from the last block without any issues (in many cases).
So what is happening with the red keyframe? It is generated from the information that come from the keyframe of the first block, plus all the changes that were applied by the frames following it up until the specific timestamp. This is 3.3 seconds in your example.
I will repeat myself once again, that in order for this to generate a playable file, you would need to be dealing with the codec which allows you to have as few frames between keyframes as you have left in the first block.
I am unaware of any tool which makes this approach easy, however.

30461: <p>I have a MKV video and I want to cut from seconds 3.3 to 22:07 minutes, but I can't cut at that start timing because there isn't a keyframe. How can I bypass that?</p>
 4943: <p>While in many cases it is impossible, there are cases where it may be <em>theoretically</em> possible. I will ignore here cases where no keyframes exist, since your question clearly stated that you are dealing with the codec with keyframe, but codecs differ in whether they allow keyframes in specific locations, or a keyframe may appear at any point.</p>
<p>If you have the latter, it would be possible to set up a case like the following:</p>
<p><a href="https://i.stack.imgur.com/VGgi4.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/VGgi4.png" alt="encode+copy" /></a></p>
<p>Here the green frames are Key Frames, and the red is the new keyframe that will be created. You can see that most blocks can be copied as is, without reencoding, that is because every frame that follows the keyframe that can be just copied, can just be copied itself. We can also simply drop the unneeded frames from the last block without any issues (in many cases).</p>
<p>So what is happening with the red keyframe? It is generated from the information that come from the keyframe of the first block, plus all the changes that were applied by the frames following it up until the specific timestamp. This is 3.3 seconds in your example.</p>
<p>I will repeat myself once again, that in order for this to generate a playable file, you would need to be dealing with the codec which allows you to have as few frames between keyframes as you have left in the first block.</p>
<p>I am unaware of any tool which makes this approach easy, however.</p>
