Comments (7)
That's an interesting question. I'm not too sure how the NDI library handles timestamps, or whether there's a way of putting in a timecode or something. I'm not sure if that would help your issue, though, which seems to be related to latency on the network layer itself. Is there anything else on the gigabit switch other than the cameras and the PC that could be pushing traffic through?
Audio delay is one of the things that I struggle with too. Generally, I think mine stays pretty steady, but it can be a pain.
from raspindi.
I was hoping that, if the time on the RPI and the time on the PC are perfectly in sync (totally possible with NTP, or even with GPSD) then putting timestamps on the video frames which are offset sufficiently into the future to be much greater than the variance in the network latency (say, 2s) would allow the receiver to buffer it until such time when it's appropriate to use the appropriate frame exactly 2s after it was generated, regardless of network latency. Then I can set my audio delay to exactly 2s and call it a day.
But this is all based on theoretical assumptions of how NDI actually works, so I will have to do some more research.
from raspindi.
My suspicions are confirmed. This is both possible, and supported. We just need to figure out how to program it. This is from the "Introduction to NDI" PDF document that ships with the SDK:
One huge advantage of NDI 4.5 capture is that all files recorded on a local system use its internal clock to provide frame sync. This means that you can capture multiple sources, even starting their recorders at different intervals, and easily sync them up for post-production using their embedded timecode.
Better still, since the system clocks of multiple systems in different locations can easily be slaved to an online NTP (Network Time Protocol) server, numerous NDI recordings can match up with precision in non-linear editing systems for multi-cam workflows – even when these are captured at different venues!
This comment is specifically about syncing recordings, so it does not address capturing side of my problem, since I'm capturing with the OBS-NDI plugin, but the first step is to make sure that the proper timecodes are sent along with the video stream, based on the RPI's system clock (which must be made accurate using NTP).
from raspindi.
Note to self: Read chapter 14.2 of the SDK documentation on "TIMECODE SYNTHESIS".
from raspindi.
Is there any progress on this? I'm looking into a streaming rig with multiple RPi high quality cameras and this would be the perfect software to run it.
from raspindi.
I found an interim "good-enough" solution, by setting "latency mode" to "low (experimental)" in the OBS-NDI plugin that I'm using. And then I forgot about this issue for a while. I have not made the time to do the necessary research yet. But it's technically possible according to what I have read thus far.
from raspindi.
No update to this issue for 30 days. Closing
from raspindi.
Related Issues (20)
- USB Webcam Support HOT 2
- Is there a method to adjust camera settings while the NDI stream is running? HOT 4
- Unable to build main branch HOT 2
- camera models applicable HOT 4
- Cannot find libraries HOT 2
- Segmentation Fault HOT 6
- Segmentation Fault (again) HOT 1
- Error while loading shared libraries: libcamera.so.0 HOT 3
- "Segmentation Fault" when trying to run HOT 35
- Build fails HOT 2
- Connected but no image HOT 9
- Build errors HOT 10
- Missing libencoders.so.1 library when running binary HOT 7
- raspindi stop a second after start with OBS plugin HOT 5
- Cannot change fps HOT 1
- Build fails HOT 6
- Preview tally status not correct with OBS 30.0.2 on Mac OS X HOT 1
- Segfault after a few minutes of streaming HOT 2
- Raspberry PI 5 support? HOT 2
- Camera not detected with raspindi on Raspberry Pi 3 Model B
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from raspindi.