You can't seamlessly loop a clip that wasn't designed to loop. Some suggestions below, but all require video editing software. No plugin for a player that I know of.
Option 1: Clip has a distinctive/necessary beginning & end that have to be seen, or has audio/narration that cannot be edited or shortened
The best option in this case would be to edit the clip to fade-in from and fade-out to black (and/or an identical image) at the beginning & end.
Now when it loops it at least appears the same (even if the player hiccups slightly). Black works well since most players go to black after finishing a clip.
Option 2: No audio, the clip's start/end location doesn't matter & you want a seamless loop
In this case you could try the following, using whatever software - iMovie, Premiere, After Effects, MovieMaker etc...
- Place the entire clip on a timeline.
- Duplicate the clip.
- Find a point in the clip that has as little motion/change as possible.
- On the top copy of the clip, move 1 frame to the left and trim everything after this point.
- On the bottom copy, go back to the chosen frame and trim everything before this point.
- Move the bottom copy left so it starts at the beginning of the timeline
- Your chosen point now starts at 0:00:00
- Shift the top copy to the right until it only overlaps slightly with the bottom copy.
- The original start/end points are now overlapping somewhere in the middle
- Add a cross-dissolve to the beginning of the top copy
- The original end point will be obscured by the dissolve.
- Experiment w/the length and location of overlap/dissolve to find a suitable result. It could work w/just a few frames, or might require a longer overlap to not look jumpy. How well it works depends on how different the original start/end frames are.
- Ensure the dissolve only occurs during overlapping frames or else you'll see clips jumping on & off screen.
- Trim the end of the timeline so it stops exactly at the last frame of the top clip.
- Your edited video will be shorter by the length of the dissolve.
- The new last frame is now exactly 1 frame before the new first frame at the beginning.
- Export timeline to your required format
The result of this process is that the beginning and end now only differ by a single frame, making a loop with minimal jump when you restart playback. The cross-dissolve in the middle takes care of the smooth transition that you don't currently have, at the expense of ~1 second of original length.
You could also flip the directions around so the top clip shows the original "end" point clearly & fades to the "start" of the bottom clip. Either way works...
There still may be a slight stutter no matter what, depending on the delivery platform. VLC is decent about looping, but iTunes and WMP have a noticeable gap even in a clip that should be seamless. If your clip is for DVD there might be a slight pause, but visually it would look the same.
If the video is for web or mobile use, it'll depend on the platform. iOS and Android are horrible about looping videos natively (there's always a noticeable gap while it restarts, if looping is allowed at all). With HTML5 video or Flash you could code it to seek to the beginning immediately before it reaches the end, hopefully preventing much stutter and avoiding the need to go to all this editing hassle...
I hope this helps!