Skip to main content

cycling_router/
cycling-router.rs

1// NDI Router that cycles through all sources switches every 5 seconds.
2use ndi_sdk::{FindInstance, RouteInstance, Source};
3use std::{thread::sleep, time::Duration};
4
5fn main() {
6    let mut fi = FindInstance::create(None).unwrap();
7    let my_name = "Source Scanning Router";
8    let ri = RouteInstance::create(my_name, &vec!["Public"]).unwrap();
9
10    loop {
11        fi.wait_for_sources(1000).unwrap();
12        let some_sources: Vec<Source> = fi.get_current_sources().unwrap();
13        println!("Found {} sources", some_sources.len());
14        for source in some_sources {
15            let is_me =
16                source.ndi_name.contains(my_name) && source.url_address.starts_with("127.0.0.1");
17            if !is_me {
18                let source = source.clone();
19                println!("Name: {}\nURL: {}\n", source.ndi_name, source.url_address);
20                ri.change(&source).unwrap();
21                sleep(Duration::from_secs(5));
22            }
23        }
24    }
25}