2

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?

2
  • so essentially you want to go from vfr to cfr on the fly?
    – timonsku
    Aug 24, 2014 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, 2014 at 16:28

1 Answer 1

3

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://192.168.1.133:8554/mpeg1or2AudioVideoTest ! 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.

2
  • (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, 2014 at 13:45
  • You can also use my library @ net7mma.codeplex.com which is both faster and more efficient than gstreamer.
    – Jay
    Dec 15, 2014 at 4:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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