Calculating frame index based on new frame rate for video generation

My .NET application as a sequential list of images representing each frame of a video recorded at 30 frames per second.



00000001.png
00000002.png
00000003.png
...
99999999.png


Now I want to reorder this list so it can generate a video based on the following parameters:



Start Frame Index: 100
Direction: Forward
Output Speed: 100 FPS
Duration: 10 seconds


So far I have something like this:



var originalFrameRate = 30D;
var originalFrameTime = 1D / originalFrameRate;
var originalStartFrameIndex = 100; // 00000100.png.
// Assume [originalFrames] will be filled with image file names from above.
var originalFrames = new List<string>
(new string [] { "0000003.png", "0000002.png", ..., "99999999.png", });

var targetFrameRate 100; // FPS.
var targetDuration = TimeSpan.FromSeconds(10);
var targetFrameCount = speed * targetDuration.Seconds;
var targetFrames = new List<string>();

for (int i = 0; i < targetFrameCount; i++)
{
// How to map the original list from 30 FPS to 100 FPS?
targetFrames.Add(originalFrames [originalStartFrameIndex + ???]);
}


In the above example, the output would be targetFrames being filled with the appropriate file name based on the variables names targetXXX.


Any suggestions on how to map this would be appreciated.


EDIT: I forgot to mention that the output video will always be generated at the original frame rate. The length of the target video will of course change. If the original FPS is lower than the target, we will repeat frames. Otherwise we will be skipping them.