# Use a GoPro as a remote webcam using Python

> Learn how to control a GoPro as a remote webcam with Python using the goprocam package over WiFi, to take photos, shoot video, and download media.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2021-01-10 | Topics: [Python](https://flaviocopes.com/tags/python/) | Canonical: https://flaviocopes.com/use-gopro-remote-python/

I have a GoPro Hero 7 White and I recently discovered I can use it as are remote webcam using a [Python](https://flaviocopes.com/python-introduction/) package called **GoPro API for Python**, available at <https://github.com/konradit/gopro-py-api>.

First install the package using `pip3 install goprocam` then enable the WiFi connection on the GoPro.

This makes the GoPro start a WiFi network. Connect to that network from the computer.

Now you're ready to write your Python program to do whatever you want with the webcam.

Import `GoProCamera` and `constants` from `goprocam`:

```py
from goprocam import GoProCamera, constants
```

Then call the `GoProCamera.GoPro()` method to get a camera object:

```py
gopro = GoProCamera.GoPro(constants.gpcontrol)
```

Get an overview of the camera status using

```py
gopro.overview()
```

In my case I got this printed out:

```
camera overview
current mode: Photo
current submode: Burst
current video resolution: out of scope
current video framerate: 240
pictures taken: 0
videos taken:  0
videos left: 02:10:44
pictures left: 11257
battery left: Halfway
space left in sd card: 58.04GB
camera SSID: HERO7 White
Is Recording: Not recording - standby
Clients connected: 2
camera model: HERO7 White
firmware version: H18.02.02.10.00
serial number: C3343323864041
```

Now you can use a variety of methods that make the GoPro take actions.

You can take a photo immediately:

```py
gopro.take_photo()
```

You can take a photo after 2 seconds:

```py
gopro.take_photo(2)
```

You can shoot a 10-seconds video:

```py
gopro.shoot_video(10)
```

Or just start recording, with no preset end time, using

```py
gopro.shoot_video()
```

You can download the last picture or video taken using

```py
gopro.downloadLastMedia()
```

You can also set a name for the file:

```py
gopro.downloadLastMedia("pic.JPG")
```

> Tip: I ran into a bug that prevented me to download the picture when I called `downloadLastMedia()`. I was getting errors that said "Not supported while recording or processing media". I had to call `gopro.getStatusRaw()` before calling `downloadLastMedia()` to fix it.

There are many useful methods like

- `KeepAlive()` to prevent the GoPro to turn off
- `setZoom()` to set the zoom
- `downloadAll()` to download all media from the camera
- `delete("last")` to delete the last media taken
- `delete("all")` to delete all media
- `power_off()` power off the camera
- `power_on()` power on the camera
- `stream()` to start streaming (haven't figured it out yet)

You can find many examples [here](https://github.com/KonradIT/gopro-py-api/tree/master/examples) and more documentation [here](https://github.com/KonradIT/gopro-py-api/blob/master/docs/docs.md).

The camera is available on IP `10.5.5.9`, with the MAC address `AA:BB:CC:DD:EE:FF`.
