The DirectShow splitter for .ASF/WMV is pretty antagonistic about doing frame exact seeking. Avisynth will just reflect the frame access pattern of the host application to DirectShowSource(), thus if the encoder asks for frames 0, 3, 1, 2, 6, 4, 5, 9, ... without help you are going to be screwed. The most reliable solution is to linearly transcode the .ASF stream to an intermediate lossless format workfile like huffyuv and encode from that. If this is unpalatable then some tricks using a hugh cache, abusing the ChangeFPS() filter and setting the seekzero option may help. Code: