Using a GoPro as a Webcam

Solution 1:

I created a script that makes the process a bit more simple. See here:

https://github.com/jschmid1/gopro_as_webcam_on_linux

Solution 2:

I am currently in the process of research/accomplishing this goal. Here's what I have found thus far and what steps I'll be taking next.

1) You can use the GoPro USB device, but there will be significant lag due to high latency. Because of this, it is recommended that you get an HDMI capture card. To answer the question, you will need a Micro HDMI to HDMI cable connecting the GoPro to the capture card. You will also need a USB 3 to mini/micro/etc. cable to connect the capture card to your computer.

2) As stated above, it can be accomplished as a USB device, by using to gopro-py-ap. However, the high latency suggests that this option is non-ideal.

3) There are numerous different video streaming apps, but the main recommendation is going to be OBS, as it is designed for professional recording, and thus has been worked on extensively. That being said, things like Cheese, can be used to tap into the feed. Any meeting apps such as Jitsi or Zoom can also access these feeds.

Here are the resources that have helped me thus far:

  • HN thread reply that is short and sweet
  • gopro-py-api
  • detailed guide about the process
  • alternate guide that details the process
  • Quora answer that points to OBS

This answer will be updated if any more details emerge.

Hope that helps!

Solution 3:

This is what I use for a GoPro Hero 8 Black on Ubuntu 18.04.

The v4l2loopback module can be cloned and compiled from:

https://github.com/umlaeute/v4l2loopback.git

I use this for Zoom on Linux and have tested thoroughly.

#!/bin/bash

echo
read -p "Plug in USB cable and turn on device. Press any key to continue.  " -n 1 -r
echo

echo
echo inserting module v4l2loopback
echo

modprobe v4l2loopback exclusive_caps=1 card_label="LinuxGoPro" video_nr=13

interface=`ip link | grep enp0 | cut -b 4-17`

echo
echo using interface: $interface
echo

dhclient -v ${interface}

echo
echo activating webcam
echo

curl 172.23.100.51/gp/gpWebcam/START

echo
echo running ffmpeg
echo

ffmpeg -threads 1 -i 'udp://@0.0.0.0:8554?overrun_nonfatal=1&fifo_size=50000000' -f:v mpegts -fflags nobuffer -vf format=yuv420p -f v4l2 /dev/video13