I'll try to make this as easy to follow for total non-nerds as possible, if you get any errors or get stuck at any step, ask for help in Discord.
- Install brew from https://brew.sh (copy and paste the command you see there on the website into Terminal and follow the prompts for password and hit enter when asked, it's perfectly safe) brew is a package manager that will make installing all the requirements super easy.
- (If you see a message about brew not being in your path, run the commands it tells you to.)
- once that is done, run
brew install node
- this will use brew to automatically install node and all its dependencies - once that is done, run
brew install ffmpeg
- this will use brew to automatically install ffmpeg, ffplay, and all their dependencies cd
to a folder where you want to download the voc-poc scripts, eg.cd Desktop
or whatever- run
git clone https://github.com/fpv-wtf/voc-poc.git
to get all the scripts from the original git repository - on macOS at this point you might get asked to install git, if so do that (but brew might have installed it if you didn't have it, not sure as I had it already) - run
cd voc-poc
to move into the folder we just downloaded as we will run those scripts there - at this point you can just follow the official readme or:
- run
npm install
to configure the scripts and all their dependencies - plug in your goggles via USB, turn on your quad and either arm it or in the goggle settings under device turn off auto temp control (idea is to start the stream while the Air Unit/Vista isn't in low power mode, this is required for Smart Controller too)
- run
node index.js -o | ffplay -i - -fast -flags2 fast -fflags nobuffer -flags low_delay -strict experimental -vf "setpts=N/60/TB" -framedrop -sync ext -probesize 32 -analyzeduration 0
...
A ffplay window should appear with your stream! 🥳 ... If not, try restarting quad and goggles.
Next time you wanna use it, if you turned auto temp control off, you can power up the quad ffter running the long command, that seems to improve latency. I'm getting about 80ms average like this, we've seen as low as 65-ish.
Running npm install I get:
voc-poc % npm install
npm WARN old lockfile
npm WARN old lockfile The package-lock.json file was created with an old version of npm,
npm WARN old lockfile so supplemental metadata must be fetched from the registry.
npm WARN old lockfile
npm WARN old lockfile This is a one-time fix-up, please be patient...
npm WARN old lockfile
npm ERR! code 1
npm ERR! path /Users/joaocoutinho/Desktop/Stream/voc-poc/node_modules/usb
npm ERR! command failed
npm ERR! command sh -c prebuild-install --runtime napi --target 4 --verbose || node-gyp rebuild
npm ERR! CC(target) Release/obj.target/libusb/libusb/libusb/core.o
npm ERR! CC(target) Release/obj.target/libusb/libusb/libusb/descriptor.o
npm ERR! CC(target) Release/obj.target/libusb/libusb/libusb/hotplug.o
npm ERR! CC(target) Release/obj.target/libusb/libusb/libusb/io.o
npm ERR! CC(target) Release/obj.target/libusb/libusb/libusb/strerror.o
npm ERR! CC(target) Release/obj.target/libusb/libusb/libusb/sync.o
npm ERR! CC(target) Release/obj.target/libusb/libusb/libusb/os/poll_posix.o
npm ERR! CC(target) Release/obj.target/libusb/libusb/libusb/os/threads_posix.o
npm ERR! CC(target) Release/obj.target/libusb/libusb/libusb/os/darwin_usb.o
npm ERR! LIBTOOL-STATIC Release/usb.a
npm ERR! CXX(target) Release/obj.target/usb_bindings/src/node_usb.o
npm ERR! prebuild-install info begin Prebuild-install version 5.3.6
npm ERR! prebuild-install info install installing standalone, skipping download.
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using node-gyp@9.4.0
npm ERR! gyp info using node@20.4.0 | darwin | arm64
npm ERR! gyp info find Python using Python version 3.8.9 found at "/Library/Developer/CommandLineTools/usr/bin/python3"