Roc Toolkit implements real-time streaming over unreliable networks like Internet and Wi-Fi. It works on Linux and macOS and provides C library, CLI tools, modules for PulseAudio and PipeWire, and Android app.

https://github.com/roc-streaming/roc-toolkit

  • chtk@feddit.nl
    link
    fedilink
    arrow-up
    3
    ·
    7 months ago

    I’m currently using ROC on my laptop and desktop. Latency is low enough to not be noticeable when playing video on my laptop and streaming audio to the desktop. Audio can get a bit choppy if my laptop is on WiFi. But that is most probably because the signal between the repeater on the second floor and my DSL modem on the ground floor is pretty meh.

    • Admiral Patrick@dubvee.org
      link
      fedilink
      English
      arrow-up
      3
      ·
      edit-2
      7 months ago

      Latency is low enough to not be noticeable when playing video on my laptop and streaming audio to the desktop.

      That’s basically my use case. Want to use my HTPC as the source and some RasPi’s or repurposed thin clients as the sinks - pretty much what I do now with MPD and Snapcast. I absolutely do not want to have to mess with audio offset settings in Emby to keep the dialog in sync. lol

      I’ve only skimmed the docs (holidays are a huge time sink haha), but do you know if it can do one-to-many or just one-to-one? Like, can I have one source and multiple receivers? The docs seemed to imply it could do one-to-many, but I didn’t get to dive into them deep enough.

      • chtk@feddit.nl
        link
        fedilink
        arrow-up
        2
        ·
        7 months ago

        Sorry for the late reply.

        I don’t know if ROC can do multicast on its own. I use the Pipewire source and sink. And I only do the one-to-one setup.

        I did some tests in Pipewire:

        Configuring multiple sinks is possible on a machine. They simply present as additional output devices. So if you want to switch audio to another source, that should be doable by switching to another output device.

        Doing one-to-many: I don’t know if that is possible with ROC alone. You might be able to do something with Pipewire graphs