The best (most straightforward) way to do this is to generate a table of figures and export the table instead of the Play[]
function. That way, each plot will be entirely pre-computed. In dynamic blocks, Mathematica only computes as much as it needs to. It will show a lower-quality version while playing, then increase the quality when it's paused. This is further discussed here:
http://reference.wolfram.com/mathematica/tutorial/AdvancedManipulateFunctionality.html
Just swap your
Play[plot[i],{i,1,limit}];
with
t = Table[plot[i],{i,1,limit,stepsize}];
You can then play through with
Manipulate[t[[i]],{i,1,limit,1}];
or export the table directly with
Export["videofile.avi",t];
Edit: Just to be clear, an example:
t = Table[Plot[Sin[x + a], {x, 0, 2*Pi}], {a, 0, 2*Pi, 0.1}];
Manipulate[t[[i]], {i, 1, Length[t], 1}]
Export["videofile.avi", t];