Live Video Pipeline - RTSP Source, GPU Inference & PTZ, Live Video Output

Posted 2 days ago

Worldwide

Summary

We need a developer to help us design and build a pipeline that takes a panoramic RTSP feed, processes it on a GPU, and pushes a cropped region back out to another source at 30fps. The crop position comes from an object detector, so the effect is a virtual PTZ camera following the action. We have a working prototype. It runs, but preprocessing is still on the CPU and pegs a core, which caps us at one stream per box and keeps us from holding 30fps at full resolution. Reconnect handling is thin, and it's never been asked to run for three hours straight. This is what we're looking to solve. We'd prefer one process, everything as a command-line argument: tracker-pipeline --model ball.engine --tracker mytracker.CropTracker \ --input rtsp://camera/stream --output rtsp://localhost:8554/court1 Input and output each take an RTSP URL or a file path, and all four combinations need to work (file to RTSP, RTSP to file, etc). We test against recorded clips constantly, so file mode isn't an afterthought. Per frame: decode on GPU, convert to model input without touching the CPU, run a TensorRT engine, hand detections to a Python tracker module that returns a crop box, crop, encode with NVENC, push out. Audio comes in on the same stream and has to come out in sync — passthrough is fine, but the video path picks up variable latency, so audio has to be delayed to match. Sync that's fine for ten minutes and half a second off by the end of a game is a failure. This pipeline will run all day without breaks, so the audio should remain in sync. Requirements: The pipeline should sustain real-time (30 FPS) processing without accumulating latency. Under normal operation, dropped frames should be avoided, and when input interruptions occur, the pipeline should recover cleanly without falling behind real time. A few seconds of processing before generating the output is fine. Environment is an EC2 g6.xlarge with an L4, Deep Learning AMI, Ubuntu. Camera is an Axis panoramic at 5120x2560. Decode is PyNvVideoCodec today, but we're not attached to it if you have a better argument. Three things we care about: Model and tracker are arguments, not constants. We'll retrain with a different class count later and that shouldn't be a code change. The tracker loads by module path through a fixed interface we provide. The tracker itself is out of scope. We'll give you a stub that returns a crop box to build against. The real one is tuned against a lot of specific failure cases and we maintain it. If the crop looks wrong while you're testing, just let us know. It has to survive the real environment. Cameras drop, bad cable runs can cause drops, games run long. Input goes away, it reconnects and picks back up with nobody watching. Something genuinely unrecoverable, it exits non-zero and says why — we'd rather it die loudly than hang holding a GPU context. Structured logs to stdout, clean shutdown on SIGTERM. Happy to hear you out on component choices. Not looking for large scale architecture — batching, orchestration, and scaling will be handled elsewhere. One process that does one thing properly is what we are after for now. One number we want: how many copies run at once on a single g6.xlarge before something falls over, and what falls over first. Send the profiling, not an estimate. Preferred background: someone who has shipped hardware decode and encode in production — NVDEC/NVENC, PyNvVideoCodec, VPF, DeepStream, GStreamer nvcodec. TensorRT in something real-time, not a notebook. In your proposal, please include: A system you built with hardware decode/encode — throughput, what broke, how you fixed it. How you'd get NV12 into model input without a round trip through host memory. The camera drops the RTSP stream mid-game. Walk us through what your code does over the next sixty seconds. If you've also worked on automated camera framing for sports — deciding how the crop moves, not just moving it — mention it. That's separate work we'll be putting out later and we'd rather find one person for both. We'd want to break this into milestones, starting with something small — file in, file out against a stub tracker — before committing to the full scope. Propose a breakdown with your bid.

  • Less than 30 hrs/week
    Hourly
  • 1-3 months
    Duration
  • Intermediate
    Experience Level
  • Remote Job
  • Ongoing project
    Project Type
Skills and Expertise
Mandatory skills
FFmpeg
Python
Video Stream
Activity on this job
  • Proposals:20 to 50
  • Last viewed by client:2 days ago
  • Interviewing:
    0
  • Invites sent:
    0
  • Unanswered invites:
    0
About the client
Member since Feb 8, 2025
  • USA
    Monroe1:32 AM
  • $7.8K total spent
    10 hires, 1 active
  • 284 hours
  • Sports & Recreation
    Small company (2-9 people)

Explore similar jobs on Upwork

Artificial Intelligence
Machine Learning
Cloud Computing
Solution Architecture
Systems Engineering
Enterprise Architecture
Software Architecture
API Integration
Cloud Architecture
Phd technical sideHourly‐ Renewed 1 month ago
Artificial Neural Network
Deep Neural Network
Convolutional Neural Network
Python
Data Science
Neural Network
Machine Learning
Deep Learning
Image Processing
Academic Writing
Technical Writing
Research Papers
Computer Science
C

How it works

  • Post a job icon
    Create your free profile
    Highlight your skills and experience, show your portfolio, and set your ideal pay rate.
  • Talent comes to you icon
    Work the way you want
    Apply for jobs, create easy-to-by projects, or access exclusive opportunities that come to you.
  • Payment simplified icon
    Get paid securely
    From contract to payment, we help you work safely and get paid securely.
Want to get started? Create a profile

About Upwork

  • Rating is 4.9 out of 5.
    4.9/5
    (Average rating of clients by professionals)
  • G2 2021
    #1 freelance platform
  • 49,000+
    Signed contract every week
  • $2.3B
    Freelancers earned on Upwork in 2020

Find the best freelance jobs

Growing your career is as easy as creating a free profile and finding work like this that fits your skills.

Trusted by

  • Microsoft Logo
  • Airbnb Logo
  • Bissell Logo
  • GoDaddy Logo