Normally, I would recommend TrackMate as have others here, but the problem here is that the crowded nature of your data means that linkage of tracks is non-trivial. The ‘simple’ solution of filtering on Track Displacement will be inaccurate if moving spots are linked with static ones, or (more likely) other moving spots.
If you’re only interested in moving spots, you may want to try using the Image Calculator to find the difference between the first two frames.
Lots of other choices would work (Divide, Subtract, XOR) and you can find details of the calculations in the link above.
This will give you an image showing only particles that are present in one frame but not the other (IE ones that are not static). You can then use the spot detector in trackmate, set a threshold and use Analyze Particles or find another way to count the spots (below is the Count Masks output after dilating and filtering small objects).
Hope that helps!