All the WDTV’s, from the Gen1 on up, behave like that when that’s the way the file’s encoded. So does WMP, for that matter.
VLC was designed to play bad/broken files… it can start playback anywhere… although even then you generally get video decoding errors until it hits an i-frame.
On any video playback device, random access into the video stream is only supported at each sequence header. You don’t notice on a DVD because the headers are half a second apart, so you get half a second of accuracy.
Some video streams have the headers very far apart, or even no additional headers at all. If the file is all one sequence, with just a header at the beginning, then the file can’t be FF/REW at all… playback can only start at the very beginning of the file.
Also, some bad encodes floating around the internet are missing the indices, and behave much like files that have no sequence headers at all.
The only way to get a desired level of random-access into the file, is to choose appropriate sequence lengths when you make the encode from your original source.
Otherwise, if the headers are 2 minutes apart, then you only get 2 minutes of “resolution” when you go to FF/REW… if the headers are 5 minutes apart, then you only get 5 minutes of “resolution”… if the headers are 10 minutes apart, then you only get 10 minutes of resolution… etc…
All that’s happening with your files, is that when you go to play, the player does what it’s supposed to… it starts playback at the nearest sequence header to where you’ve requested playback. It physically _ CAN’T _ start playback where you’ve asked it to, because it’s missing picture information and other important details about the video stream. It starts the nearest place that playback is supported.
This happens with chaptering information, as well. Despite the fact that the chapter information in the file gives a specific time code, down to the frame, of where that chapter begins in the video stream, if you select that chapter, playback will not begin at that frame, but at the nearest sequence header to the given time code.