mirror of
https://github.com/AlexxIT/go2rtc.git
synced 2025-09-26 12:21:16 +08:00
Notes
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.
Producers (input)
- 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 - Recevers codecs
- Codecs can be outgoing (two way audio) - Senders codecs
Format | Source protocols | Ingress protocols | Recevers codecs | Senders codecs | Example |
---|---|---|---|---|---|
adts | http,tcp,pipe | http | aac | http: |
|
alsa | pipe | pcm | alsa: |
||
bubble | http | h264,hevc,pcm_alaw | bubble: |
||
dvrip | tcp | h264,hevc,pcm_alaw,pcm_mulaw | pcm_alaw | dvrip: |
|
flv | http,tcp,pipe | http | h264,aac | http: |
|
gopro | http+udp | TODO | gopro: |
||
hass/webrtc | ws+udp,tcp | TODO | hass: |
||
hls/mpegts | http | h264,h265,aac,opus | http: |
||
homekit | homekit+udp | h264,eld* | homekit: |
||
isapi | http | pcm_alaw,pcm_mulaw | isapi: |
||
ivideon | ws | h264 | ivideon: |
||
kasa | http | h264,pcm_mulaw | kasa: |
||
h264 | http,tcp,pipe | http | h264 | http: |
|
hevc | http,tcp,pipe | http | hevc | http: |
|
mjpeg | http,tcp,pipe | http | mjpeg | http: |
|
mpjpeg | http,tcp,pipe | http | mjpeg | http: |
|
mpegts | http,tcp,pipe | http | h264,hevc,aac,opus | http: |
|
nest/webrtc | http+udp | TODO | nest: |
||
roborock | mqtt+udp | h264,opus | opus | roborock: |
|
rtmp | rtmp | rtmp | h264,aac | rtmp: |
|
rtsp | rtsp+tcp,ws | rtsp+tcp | h264,hevc,aac,pcm*,opus | pcm*,opus | rtsp: |
stdin | pipe | pcm_alaw,pcm_mulaw | stdin: |
||
tapo | http | h264,pcma | pcm_alaw | tapo: |
|
wav | http,tcp,pipe | http | pcm_alaw,pcm_mulaw | http: |
|
webrtc* | TODO | TODO | h264,pcm_alaw,pcm_mulaw,opus | pcm_alaw,pcm_mulaw | webrtc: |
webtorrent | TODO | TODO | TODO | TODO | webtorrent: |
yuv4mpegpipe | http,tcp,pipe | http | rawvideo | http: |
- 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
Consumers (output)
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 | homekit+udp | 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+tcp | h264,hevc,aac,pcm*,opus | rtsp://localhost:8554/{stream_name} |
|
webrtc | TODO | 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
Snapshots
Format | Protocol | Send codecs | Example |
---|---|---|---|
jpeg | http | mjpeg | GET /api/frame.jpeg |
mp4 | http | h264,hevc | GET /api/frame.mp4 |
Developers
File naming:
pkg/{format}/producer.go
- producer for this format (also if support backchannel)pkg/{format}/consumer.go
- consumer for this formatpkg/{format}/backchanel.go
- producer with only backchannel func