How to connect to GoPro Hero cameras with OBS Studio

This tutorial shows how you can connect GoPro Hero cameras to OBS Studio.

Pre-requisits

Setup instructions

Step 1: Download ffmpeg

Download ffmpeg and extract the “bin/ffpmpeg.exe” (or “bin/ffmpeg“) file to the Desktop.

Step 2: Connect to the GoPro camera and start the Camera Suite streaming server

Connect to the GoPro’s WiFi network using the macOS or Windows network manager. If you have a GoPro Hero 8/Max camera then the WiFi connection can be created using the WiFi connector app.

Then start the Camera Suite app, connect to the GoPro camera, and start the streaming server in the Camera Suite app. Uncheck the “Enable UDP streaming server” checkbox before starting the streaming server.

Step 3: Start ffmpeg

Open a command prompt (terminal) and type in the following two commands:

Windows:

cd Desktop
ffmpeg -fflags nobuffer -f mpegts -i udp://10.5.5.101:8554 -f mpegts -vcodec copy udp://localhost:10000

 

macOS:

cd Desktop
./ffmpeg -fflags nobuffer -f mpegts -i udp://10.5.5.101:8554 -f mpegts -vcodec copy udp://localhost:10000

Step 4: Start OBS Studio

Start OBS Studio and create a new Media Source. Enter “udp://@:10000” as input and “mpegts” as input format.

The GoPro live stream should now appear in the OBS Studio scene.

 

The following videos show the whole process on Windows and macOS:

Microsoft Windows 10

 

Apple macOS (10.10 or newer)

 

53 COMMENTS

  1. Hello, I get in the command line this response in every line:

    [mpegts @ 000002718f31bbc0] Packet corrupt (stream = 0, dts = 58321263)..8kbits/s speed=1.01x

    It looks like the packets are corrupted and then there are many drop-outs in OBS.
    Is there any way to eliminate that please? Otherwise I am not able to use it for my stream as the quality is quite low.

    Thanks.

    Lukas

  2. Can I stream live on Facebook using a Go Pro 4, the Camera Suite and OBS? I just paid for Camera Suite for this purpose but now I’m not sure if this is possible? I ask because the Mac has to be connected to the Go Pro Wifi, so how can I use the OBS to stream on Facebook?

      • Is it the same using Camera Remote? Do I still need a second adapter with Camera Remote? What is network switching? What if I only have my phones wifi available?

        • The GoPro creates its own WiFi network (it cannot connect to other WiFi networks) which means you need a second connection for the internet (this can either be a LAN cable or a second WiFi card).

          • Ok, so I have connected to LAN now. I am able to stream, however, do you have any idea on how to force the browser to use only lan, since the wifi is connected to the gropro wifi device? That way the stream wont be interrupted?

          • Usually the address (e.g. from the browser) is automatically routed to the correct interface. So when you enter a web address in the browser then the browser should open the web address and not access the camera.

  3. Com esse programa consigo conectar a Gopro hero 5 session?
    Quero usar com o OBS Studio para fazer transmissão ao vivo pelo YouTube

  4. Good morning!
    Yesterday I bought Camera Suite and at first I got it running fine following all the tutorial steps, wifi streaming from my Hero 6 to OBS. I then wanted to start a Facebook Live so I connected an Apple usb ethernet adapter to connect to the internet.
    My OBS gopro preview froze, so I stopped the streaming server. When I restarted it, OBS did not the stream anymore, so I tried to go over the tutorial process again. From then on, I could not make it work anymore. Now everytime I start ffmpeg, I get terminal errors, with different error messages and lengths of corrupt packets, but always ending with this message:

    Unable to find a suitable output format for ‘copy’
    copy: Invalid argument

    I tried all kinds of different setups in different orders:
    rebooting my laptop and gopro, switching os x network adapters and disabling them one by one, resetting my gopro’s connections and pairing it to the app again, running the udp stream to VLC (which shows a green screen with blocks of live image), and what not. I also tried to adjust gopro stream settings in Camera Suite but that made the app crash.

    Only once or twice, ffmeg started running, showing ‘Packet corrupt’ messages inbetween but still running frames and streaming to OBS with obviously glitchy preview. But everytime I try to replicate that little bit of progress, ffmpeg stops again.
    When I stream to OBS through the gopro app on my ipad, all is fine and I can start a Facebook live session, so the OBS part is not the problem. I guess it must have something to do with the ffmpeg settings?

    Below is some output of my terminal window, can you please take a look at it and maybe figure out what I am doing wrong? Thanks in advance!

    OUTPUT EXAMPLE:
    mrtn@AirBook Desktop % ./ffmpeg -fflags nobuffer -f mpegts -i udp://10.5.5.101:8554 -f mpegts – copy udp://localhost:10000
    ffmpeg version git-2020-05-04-5767a2e Copyright (c) 2000-2020 the FFmpeg developers
    built with Apple clang version 11.0.0 (clang-1100.0.33.8)
    configuration: –enable-gpl –enable-version3 –enable-sdl2 –enable-fontconfig –enable-gnutls –enable-iconv –enable-libass –enable-libdav1d –enable-libbluray –enable-libfreetype –enable-libmp3lame –enable-libopencore-amrnb –enable-libopencore-amrwb –enable-libopenjpeg –enable-libopus –enable-libshine –enable-libsnappy –enable-libsoxr –enable-libsrt –enable-libtheora –enable-libtwolame –enable-libvpx –enable-libwavpack –enable-libwebp –enable-libx264 –enable-libx265 –enable-libxml2 –enable-libzimg –enable-lzma –enable-zlib –enable-gmp –enable-libvidstab –enable-libvmaf –enable-libvorbis –enable-libvo-amrwbenc –enable-libmysofa –enable-libspeex –enable-libxvid –enable-libaom –enable-appkit –enable-avfoundation –enable-coreimage –enable-audiotoolbox
    libavutil 56. 43.100 / 56. 43.100
    libavcodec 58. 82.100 / 58. 82.100
    libavformat 58. 42.102 / 58. 42.102
    libavdevice 58. 9.103 / 58. 9.103
    libavfilter 7. 80.100 / 7. 80.100
    libswscale 5. 6.101 / 5. 6.101
    libswresample 3. 6.100 / 3. 6.100
    libpostproc 55. 6.100 / 55. 6.100
    [mpegts @ 0x7fab88808200] Unable to seek back to the start
    Last message repeated 1 times
    [h264 @ 0x7fab8880a800] non-existing PPS 0 referenced
    Last message repeated 1 times
    [h264 @ 0x7fab8880a800] decode_slice_header error
    [h264 @ 0x7fab8880a800] no frame!
    [mpegts @ 0x7fab88808200] Packet corrupt (stream = 0, dts = 2347200).
    [mpegts @ 0x7fab88808200] Packet corrupt (stream = 0, dts = 2433600).
    [mpegts @ 0x7fab88808200] Packet corrupt (stream = 0, dts = 2476800).
    [mpegts @ 0x7fab88808200] Packet corrupt (stream = 0, dts = 2610000).
    [mpegts @ 0x7fab88808200] Could not find codec parameters for stream 2 (Unknown: none ([128][0][0][0] / 0x0080)): unknown codec
    Consider increasing the value for the ‘analyzeduration’ and ‘probesize’ options
    Input #0, mpegts, from ‘udp://10.5.5.101:8554’:
    Duration: N/A, start: 22.520000, bitrate: N/A
    Program 1
    Stream #0:0[0x1011]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuvj420p(pc, bt709, progressive), 848×480 [SAR 1:1 DAR 53:30], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x1100]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 196 kb/s
    Stream #0:2[0x200]: Unknown: none ([128][0][0][0] / 0x0080)
    [NULL @ 0x7fab88823c00] Unable to find a suitable output format for ‘copy’
    copy: Invalid argument
    mrtn@AirBook Desktop %

    ANOTHER OUTPUT EXAMPLE:
    mrtn@AirBook Desktop % ./ffmpeg -fflags nobuffer -f mpegts -i udp://10.5.5.101:8554 -f mpegts – copy udp://localhost:1000
    ffmpeg version git-2020-05-04-5767a2e Copyright (c) 2000-2020 the FFmpeg developers
    built with Apple clang version 11.0.0 (clang-1100.0.33.8)
    configuration: –enable-gpl –enable-version3 –enable-sdl2 –enable-fontconfig –enable-gnutls –enable-iconv –enable-libass –enable-libdav1d –enable-libbluray –enable-libfreetype –enable-libmp3lame –enable-libopencore-amrnb –enable-libopencore-amrwb –enable-libopenjpeg –enable-libopus –enable-libshine –enable-libsnappy –enable-libsoxr –enable-libsrt –enable-libtheora –enable-libtwolame –enable-libvpx –enable-libwavpack –enable-libwebp –enable-libx264 –enable-libx265 –enable-libxml2 –enable-libzimg –enable-lzma –enable-zlib –enable-gmp –enable-libvidstab –enable-libvmaf –enable-libvorbis –enable-libvo-amrwbenc –enable-libmysofa –enable-libspeex –enable-libxvid –enable-libaom –enable-appkit –enable-avfoundation –enable-coreimage –enable-audiotoolbox
    libavutil 56. 43.100 / 56. 43.100
    libavcodec 58. 82.100 / 58. 82.100
    libavformat 58. 42.102 / 58. 42.102
    libavdevice 58. 9.103 / 58. 9.103
    libavfilter 7. 80.100 / 7. 80.100
    libswscale 5. 6.101 / 5. 6.101
    libswresample 3. 6.100 / 3. 6.100
    libpostproc 55. 6.100 / 55. 6.100
    [h264 @ 0x7fcddb809800] non-existing PPS 0 referenced
    Last message repeated 1 times
    [h264 @ 0x7fcddb809800] decode_slice_header error
    [h264 @ 0x7fcddb809800] no frame!
    [h264 @ 0x7fcddb809800] non-existing PPS 0 referenced
    Last message repeated 1 times
    [h264 @ 0x7fcddb809800] decode_slice_header error
    [h264 @ 0x7fcddb809800] no frame!
    [h264 @ 0x7fcddb809800] non-existing PPS 0 referenced
    Last message repeated 1 times
    [h264 @ 0x7fcddb809800] decode_slice_header error
    [h264 @ 0x7fcddb809800] no frame!
    [h264 @ 0x7fcddb809800] non-existing PPS 0 referenced
    Last message repeated 1 times
    [h264 @ 0x7fcddb809800] decode_slice_header error
    [h264 @ 0x7fcddb809800] no frame!
    [h264 @ 0x7fcddb809800] non-existing PPS 0 referenced
    Last message repeated 1 times
    [h264 @ 0x7fcddb809800] decode_slice_header error
    [h264 @ 0x7fcddb809800] no frame!
    [h264 @ 0x7fcddb809800] non-existing PPS 0 referenced
    Last message repeated 1 times
    [h264 @ 0x7fcddb809800] decode_slice_header error
    [h264 @ 0x7fcddb809800] no frame!
    [h264 @ 0x7fcddb809800] non-existing PPS 0 referenced
    Last message repeated 1 times
    [h264 @ 0x7fcddb809800] decode_slice_header error
    [h264 @ 0x7fcddb809800] no frame!
    [h264 @ 0x7fcddb809800] non-existing PPS 0 referenced
    Last message repeated 1 times
    [h264 @ 0x7fcddb809800] decode_slice_header error
    [h264 @ 0x7fcddb809800] no frame!
    [h264 @ 0x7fcddb809800] non-existing PPS 0 referenced
    Last message repeated 1 times
    [h264 @ 0x7fcddb809800] decode_slice_header error
    [h264 @ 0x7fcddb809800] no frame!
    [h264 @ 0x7fcddb809800] non-existing PPS 0 referenced
    Last message repeated 1 times
    [h264 @ 0x7fcddb809800] decode_slice_header error
    [h264 @ 0x7fcddb809800] no frame!
    [h264 @ 0x7fcddb809800] non-existing PPS 0 referenced
    Last message repeated 1 times
    [h264 @ 0x7fcddb809800] decode_slice_header error
    [h264 @ 0x7fcddb809800] no frame!
    [mpegts @ 0x7fcdda008c00] Packet corrupt (stream = 0, dts = 795600).
    [h264 @ 0x7fcddb809800] cabac decode of qscale diff failed at 44 10
    [h264 @ 0x7fcddb809800] error while decoding MB 44 10, bytestream 1847
    [h264 @ 0x7fcddb809800] concealing 1065 DC, 1065 AC, 1065 MV errors in P frame
    [mpegts @ 0x7fcdda008c00] Packet corrupt (stream = 0, dts = 878400).
    [mpegts @ 0x7fcdda008c00] Packet corrupt (stream = 0, dts = 964800).
    [mpegts @ 0x7fcdda008c00] Packet corrupt (stream = 0, dts = 1008000).
    [mpegts @ 0x7fcdda008c00] Packet corrupt (stream = 0, dts = 1094400).
    [mpegts @ 0x7fcdda008c00] Packet corrupt (stream = 0, dts = 1137600).
    [mpegts @ 0x7fcdda008c00] Packet corrupt (stream = 0, dts = 1180800).
    [mpegts @ 0x7fcdda008c00] Packet corrupt (stream = 0, dts = 1224000).
    [mpegts @ 0x7fcdda008c00] Packet corrupt (stream = 0, dts = 1267200).
    [mpegts @ 0x7fcdda008c00] Packet corrupt (stream = 0, dts = 1310400).
    [mpegts @ 0x7fcdda008c00] Packet corrupt (stream = 0, dts = 1353600).
    [mpegts @ 0x7fcdda008c00] Could not find codec parameters for stream 2 (Unknown: none ([128][0][0][0] / 0x0080)): unknown codec
    Consider increasing the value for the ‘analyzeduration’ and ‘probesize’ options
    Input #0, mpegts, from ‘udp://10.5.5.101:8554’:
    Duration: N/A, start: 8.170667, bitrate: N/A
    Program 1
    Stream #0:0[0x1011]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuvj420p(pc, bt709, progressive), 848×480 [SAR 1:1 DAR 53:30], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x1100]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 195 kb/s
    Stream #0:2[0x200]: Unknown: none ([128][0][0][0] / 0x0080)
    [NULL @ 0x7fcdda80c600] Unable to find a suitable output format for ‘copy’
    copy: Invalid argument
    mrtn@AirBook Desktop %

  5. Hello, I’m having trouble with the command giving me the “not recognized as an internal or external command, operable program or batch file.” I’ve copied the ffmpeg and ffplay files to the desktop and entered the cd Desktop command prior to this step. Thanks for any help!

      • Thanks for the response. I’m using Windows. I tried the method in the video (with the 2 .exe files on my desktop). I also tried “cd Desktop” then “ffmpeg” as well as “ffmpeg” as the only command. This is what returns:
        ‘ffmpeg’ is not recognized as an internal or external command,
        operable program or batch file.

  6. ./ffmpeg -fflags nobuffer -f mpegts -i udp://10.5.5.101:8554 -f mpegts -vcodec copy udp://localhost:10000
    ffmpeg version git-2020-05-13-b12b053 Copyright (c) 2000-2020 the FFmpeg developers
    built with Apple clang version 11.0.0 (clang-1100.0.33.8)
    configuration: –enable-gpl –enable-version3 –enable-sdl2 –enable-fontconfig –enable-gnutls –enable-iconv –enable-libass –enable-libdav1d –enable-libbluray –enable-libfreetype –enable-libmp3lame –enable-libopencore-amrnb –enable-libopencore-amrwb –enable-libopenjpeg –enable-libopus –enable-libshine –enable-libsnappy –enable-libsoxr –enable-libsrt –enable-libtheora –enable-libtwolame –enable-libvpx –enable-libwavpack –enable-libwebp –enable-libx264 –enable-libx265 –enable-libxml2 –enable-libzimg –enable-lzma –enable-zlib –enable-gmp –enable-libvidstab –enable-libvmaf –enable-libvorbis –enable-libvo-amrwbenc –enable-libmysofa –enable-libspeex –enable-libxvid –enable-libaom –enable-appkit –enable-avfoundation –enable-coreimage –enable-audiotoolbox
    libavutil 56. 45.100 / 56. 45.100
    libavcodec 58. 84.100 / 58. 84.100
    libavformat 58. 43.100 / 58. 43.100
    libavdevice 58. 9.103 / 58. 9.103
    libavfilter 7. 80.100 / 7. 80.100
    libswscale 5. 6.101 / 5. 6.101
    libswresample 3. 6.100 / 3. 6.100
    libpostproc 55. 6.100 / 55. 6.100

    It not going forward and after control +C it throws following error udp://10.5.5.101:8554: could not find codec parameter

  7. Is it possible to stream multiple gopro?

    Or you can only stream one at the time?

    I would like to stream multiple gopro with obs. it will gave me an extra feature for my videos. And can I switch from a max to an 8 during the streaming. Sometimes I’ m 360 and the other view os « straight ». Thanks a lot amd have a good day.

  8. In my case the image does not start in OBS, in the terminal it appears and does not start as shown in the videos.

    I downloaded the version that sent me in the email, but it didn’t work. The ffmpeg system does not boot

    • Have you tried to toggle the “eye” icon in OBS Studio? Sometimes you have to disable and then enable the MediaSource using the eye icon to get the video working.

  9. Did everything the way you described it for windows, except I am using Streamlabs OBS…just wont work for me, toggling the eye is of no use.

    This is what the cmd shows:
    Stream #0:0 -> #0:0 (copy)
    Press [q] to stop, [?] for help
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 17513496).
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 17570553).
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 17609592).speed= 0x
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 17657640).
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 17780763).speed= 0x
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 17855838)..8kbits/s speed=1.28x
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 17909892)..8kbits/s speed=1.36x
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 17942925)..3kbits/s speed=1.37x
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 18189171).
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 18438420)..2kbits/s speed=0.928x
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 18576558)..1kbits/s speed=0.944x
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 18621603)..8kbits/s speed=1.06x
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 18684666)..4kbits/s speed=1.14x
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 18909891)..5kbits/s speed=1.12x
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 19174155)..3kbits/s speed=0.981x
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 19399380)..1kbits/s speed=0.96x
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 19624605)..1kbits/s speed=0.985x
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = NOPTS).412.3kbits/s speed=0.987x
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 19972953).
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 19999980)..8kbits/s speed=0.94x
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = NOPTS).
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 20438418).
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 20639619)..8kbits/s speed=0.933x
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 20663643)..6kbits/s speed=0.999x
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 20804784).
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 20924904)..7kbits/s speed=1.02x
    [mpegts @ 000001b67ca6c980] Packet corrupt (stream = 0, dts = 21081060)..3kbits/s speed=1.02x
    frame= 21 fps=0.5 q=-1.0 size= 1964kB time=00:00:40.04 bitrate= 401.8kbits/s speed=1.01x

    I am also very interested in how to connect two hero8 cameras, looking forward for the tutorial!

  10. Hallo unter OSX nach Strg+C
    [mpegts @ 0x7fd2ab008200] Could not detect TS packet size, defaulting to non-FEC/DVHS
    udp://10.5.5.101:8554: could not find codec parameters

LEAVE A REPLY

Please enter your comment!
Please enter your name here