The fault was most definitely with gscam. Longterm, I need to find the time to make gscam timestamp aware (which is the problem). In the meantime, I've added a work-around to all versions of gscam. gscam can now respond to a /brown/gscam/fps parameter. If your video runs at---say--30 fps then: rosparam set /brown/gscam/fps 30 before running gscam will have gscam emit frames at the appropriate rate. One thing to note: because gscam will no longer be greedily processing frames, you will probably need to ad a queue to your gstreamer pipeline. For example: export GSCAM_CONFIG="filesrc location=/home/tjay/test/sixties.mov ! decodebin ! ffmpegcolorspace ! queue ! video/x-raw-rgb ! identity name=ros ! fakesink" Thank you very, very much for bringing this problem to my attention. Please let me know if this work-around works for you. I'll keep you posted on my progress on a "real" solution. _Trevor