If you are looking for a commercial library to use for this, I recommend checking out the LEADTOOLS Multimedia SDK. The LEADTOOLS Multimedia SDK is developed around the Microsoft DirectShow or Media Foundation libraries.
You can use the LEADTOOLS PlayCtrl to load the video, navigate to the frame you wish to get the image from, then give you the image at that particular frame location. This can be done in just a few lines of code:
PlayCtrl playCtrl = new PlayCtrl();
playCtrl.SourceFile = @"Path the video file";
playCtrl.Run();
playCtrl.CurrentFramePosition += 399;
Image image = playCtrl.GetStillImage(0);
image.Save(@"Path to save image location", ImageFormat.Bmp);
Please note that I am an employee of this product.