Video Production Stack Exchange is a question and answer site for engineers, producers, editors, and enthusiasts spanning the fields of video, and media creation. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

We'll be receiving a media stream that will suffer varying time shifts, and we need a solution that will clock the video+audio out at a predictable rate. We can time stamp the input stream (assume SMPTE LTC) to aid in identifying the amount of shift that has occurred.

This is basically what a TBC does, but these delays may be on the order of seconds, so the buffer would have to be quite large. Total delay through the system is not important, as long as the time jitter is ultimately removed.

EDIT: This could also be thought of as a rate corrector. The incoming video will have a long-term average frame rate of (say) 30fps, but the short-term rate could vary +/- 10% from that. The goal is to buffer enough video so that the output rate can be exactly 30 fps.

Something that worked with encoded (say MP4 over RTSP) video would be ideal, but if we need to work in baseband (SDI etc) that's acceptable.

Anyone know of such a device or system?

share|improve this question
so essentially you want to go from vfr to cfr on the fly? – Professor Sparkles Aug 24 '14 at 15:53
Not quite. The input stream is a constant frame rate, but the arrival times may vary because of the path it takes. Think of it as having jitter and drift. This device or software would simply delay some frames more than others. It's a FIFO with separate input and output clocks: the input is clocked by the arrival of new frames, the output is clocked at a fixed rate. The goal is to have a known delay between the original CFR stream and the output CFR stream, that absorbs any path jitter. – Jim Mack Aug 24 '14 at 16:28
up vote 2 down vote accepted

You can do this with GStreamer and a plugin called rtpjitterbuffer. There is an example usage on the bottom of that page with the gst-launch tool to do a simple desktop playback of an rtp stream with network errors.

gst-launch-1.0 rtspsrc location=rtsp:// ! rtpjitterbuffer ! rtpmpvdepay ! mpeg2dec ! xvimagesink

You can customize this to your need and set specific timeouts and also make a new network stream instead of doing desktop playback. You can do pretty much anything with gstreamer, you just have to read a bit into it.

Regarding hardware I don't know of any that does this but I'd guess its pretty expensive like it usually is with very specialized hardware.

share|improve this answer
(I thought I had commented here but I don't see it. Apologies for any dupe). Thanks, that looks promising. We'll have a chance to test it in the week ahead. – Jim Mack Aug 25 '14 at 13:45
You can also use my library @ which is both faster and more efficient than gstreamer. – Jay Dec 15 '14 at 4:05

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.