Anyway, here's the comparison video I made:
Mediafire (~20MB):
http://www.mediafire.com/download.php?7s2lbxsjmiax7m7
Youtube:
http://www.youtube.com/watch?v=vUj9ZEWnO1M
And the AVISynth script I used:
http://pastebin.com/mKC7fuGP
Note: I entered the pause and subtitle timings by hand. The timing numbers occur directly on the clip as it is modified. Also, I think it is necessary to feed x264 a video with a width which is a multiple of 4; otherwise the encode is skewed and messed up.
Also, I don't know why the internal video dumper of VBA v22 and others is inconsistent with the frame display in emulator, but it may have caused all sorts of problems we never knew about for the last 5 years.
Edit: That actually makes VBA v24 more accurate than VBA v22.
In the sense that its frame display more accurately indicates the dumped video, of course. I don't know much about emulation accuracy to comment on that, and v24 is known to artificially inflate rerecord count, whereas v22 doesn't.
Edit 2: Here's a comparison of SML TAS frames in v24 emulator, and the corresponding frames in v24 video dump. First number is frame in emulator, second is frame in video dump, and third is second minus first. Each measurement is taken when Mario first appears in position at the start of a new level from beginning of 1-2 onward, except for the last measurement which is when "5000" appears after beating the last boss.
2311 2313 2
4531 4534 3
8289 8293 4
10686 10691 5
12864 12870 6
20228 20238 10
23535 23545 10
25954 25965 11
29884 29896 12
33087 33100 13
36046 36060 14
43728 43742 14
So it is still inaccurate, just not as much.