go2rtc tries to name formats, protocols and codecs the same way they are named in FFmpeg. Some formats and protocols go2rtc supports exclusively. They have no equivalent in FFmpeg.
- The initiator of the connection can be go2rtc - Source protocols
- The initiator of the connection can be an external program - Ingress protocols
- Codecs can be incoming - Receiver codecs
- Codecs can be outgoing (two way audio) - Sender codecs
| Group | Format | Protocols | Ingress | Receiver codecs | Sender codecs | Example |
|---|---|---|---|---|---|---|
| Devices | alsa | pipe | pcm | alsa: |
||
| Devices | v4l2 | pipe | v4l2: |
|||
| Files | adts | http, tcp, pipe | http | aac | http: |
|
| Files | flv | http, tcp, pipe | http | h264, aac | http: |
|
| Files | h264 | http, tcp, pipe | http | h264 | http: |
|
| Files | hevc | http, tcp, pipe | http | hevc | http: |
|
| Files | hls | http | h264, h265, aac, opus | http: |
||
| Files | mjpeg | http, tcp, pipe | http | mjpeg | http: |
|
| Files | mpegts | http, tcp, pipe | http | h264, hevc, aac, opus | http: |
|
| Files | wav | http, tcp, pipe | http | pcm_alaw, pcm_mulaw | http: |
|
| Net (pub) | mpjpeg | http, tcp, pipe | http | mjpeg | http: |
|
| Net (pub) | onvif | rtsp | onvif: |
|||
| Net (pub) | rtmp | rtmp | rtmp | h264, aac | rtmp: |
|
| Net (pub) | rtsp | rtsp, ws | rtsp | h264, hevc, aac, pcm*, opus | pcm*, opus | rtsp: |
| Net (pub) | webrtc* | webrtc | webrtc | h264, pcm_alaw, pcm_mulaw, opus | pcm_alaw, pcm_mulaw | webrtc: |
| Net (pub) | yuv4mpegpipe | http, tcp, pipe | http | rawvideo | http: |
|
| Net (priv) | bubble | http | h264, hevc, pcm_alaw | bubble: |
||
| Net (priv) | doorbird | http | doorbird: |
|||
| Net (priv) | dvrip | tcp | h264, hevc, pcm_alaw, pcm_mulaw | pcm_alaw | dvrip: |
|
| Net (priv) | eseecloud | http | eseecloud: |
|||
| Net (priv) | gopro | udp | TODO | gopro: |
||
| Net (priv) | hass | webrtc | TODO | hass: |
||
| Net (priv) | homekit | hap | h264, eld* | homekit: |
||
| Net (priv) | isapi | http | pcm_alaw, pcm_mulaw | isapi: |
||
| Net (priv) | kasa | http | h264, pcm_mulaw | kasa: |
||
| Net (priv) | nest | rtsp, webrtc | TODO | nest: |
||
| Net (priv) | ring | webrtc | ring: |
|||
| Net (priv) | roborock | webrtc | h264, opus | opus | roborock: |
|
| Net (priv) | tapo | http | h264, pcma | pcm_alaw | tapo: |
|
| Net (priv) | tuya | webrtc | tuya: |
|||
| Net (priv) | vigi | http | vigi: |
|||
| Net (priv) | webtorrent | webrtc | TODO | TODO | TODO | webtorrent: |
| Net (priv) | xiaomi* | cs2, tutk | xiaomi: |
|||
| Services | flussonic | ws | flussonic: |
|||
| Services | ivideon | ws | h264 | ivideon: |
||
| Services | yandex | webrtc | yandex: |
|||
| Other | echo | * | echo: |
|||
| Other | exec | pipe, rtsp | exec: |
|||
| Other | expr | * | expr: |
|||
| Other | ffmpeg | pipe, rtsp | ffmpeg: |
|||
| Other | stdin | pipe | pcm_alaw, pcm_mulaw | stdin: |
- eld - rare variant of aac codec
- pcm - pcm_alaw pcm_mulaw pcm_s16be pcm_s16le
- webrtc - webrtc/kinesis, webrtc/openipc, webrtc/milestone, webrtc/wyze, webrtc/whep
| Format | Protocol | Send codecs | Recv codecs | Example |
|---|---|---|---|---|
| adts | http | aac | GET /api/stream.adts |
|
| ascii | http | mjpeg | GET /api/stream.ascii |
|
| flv | http | h264, aac | GET /api/stream.flv |
|
| hls/mpegts | http | h264, hevc, aac | GET /api/stream.m3u8 |
|
| hls/fmp4 | http | h264, hevc, aac, pcm*, opus | GET /api/stream.m3u8?mp4 |
|
| homekit | hap | h264, opus | Apple HomeKit app | |
| mjpeg | ws | mjpeg | {"type":"mjpeg"} -> /api/ws |
|
| mpjpeg | http | mjpeg | GET /api/stream.mjpeg |
|
| mp4 | http | h264, hevc, aac, pcm*, opus | GET /api/stream.mp4 |
|
| mse/fmp4 | ws | h264, hevc, aac, pcm*, opus | {"type":"mse"} -> /api/ws |
|
| mpegts | http | h264, hevc, aac | GET /api/stream.ts |
|
| rtmp | rtmp | h264, aac | rtmp://localhost:1935/{stream_name} |
|
| rtsp | rtsp | h264, hevc, aac, pcm*, opus | rtsp://localhost:8554/{stream_name} |
|
| webrtc | webrtc | h264, pcm_alaw, pcm_mulaw, opus | pcm_alaw, pcm_mulaw, opus | {"type":"webrtc"} -> /api/ws |
| yuv4mpegpipe | http | rawvideo | GET /api/stream.y4m |
- pcm - pcm_alaw pcm_mulaw pcm_s16be pcm_s16le
| Format | Protocol | Send codecs | Example |
|---|---|---|---|
| jpeg | http | mjpeg | GET /api/frame.jpeg |
| mp4 | http | h264,hevc | GET /api/frame.mp4 |
File naming:
pkg/{format}/producer.go- producer for this format (also if support backchannel)pkg/{format}/consumer.go- consumer for this formatpkg/{format}/backchannel.go- producer with only backchannel func
Mentioning modules:

