Alex X 8399edce6a Fix RTSP AAC audio from very buggy noname camera #1328 1 月之前
..
aac 8399edce6a Fix RTSP AAC audio from very buggy noname camera #1328 1 月之前
ascii 0bd2fcde54 Update color index func for ascii stream 5 月之前
bits 268629f551 Fix pix_fmt for publishing to RTMP servers 5 月之前
bubble bd88695e59 Fix AnnexB parsing in some cases 2 月之前
core 2311d5eabe Change go version to 1.20 for Windows 7 support 1 月之前
debug 8e571a66e3 Code refactoring for debug packet logger 5 月之前
dvrip bd88695e59 Fix AnnexB parsing in some cases 2 月之前
expr 62343af009 Update dependencies 9 月之前
ffmpeg bf3f81ccac Update ffmpeg pkg for reading files and parsing ffmpeg version 5 月之前
flv 96504e2fb0 BIG rewrite stream info 4 月之前
gopro 96504e2fb0 BIG rewrite stream info 4 月之前
h264 bd88695e59 Fix AnnexB parsing in some cases 2 月之前
h265 c60767c8b0 Add support H265 to FLV source #822 9 月之前
hap a9e7a73cc8 Add video bitrate setting for HomeKit source 4 月之前
hass 96504e2fb0 BIG rewrite stream info 4 月之前
hls 96504e2fb0 BIG rewrite stream info 4 月之前
homekit 2311d5eabe Change go version to 1.20 for Windows 7 support 1 月之前
image 96504e2fb0 BIG rewrite stream info 4 月之前
isapi 96504e2fb0 BIG rewrite stream info 4 月之前
iso 8cd977f7ad Add support B-frames for MP4 consumer 1 年之前
ivideon 96504e2fb0 BIG rewrite stream info 4 月之前
kasa bd88695e59 Fix AnnexB parsing in some cases 2 月之前
magic bd88695e59 Fix AnnexB parsing in some cases 2 月之前
mdns e080eac204 refactor(mdns): consolidate platform-specific syscall files 5 月之前
mjpeg c5bc761a52 Fix RTSP MJPEG source quality in some cases #559 2 月之前
mp4 96504e2fb0 BIG rewrite stream info 4 月之前
mpegts bd88695e59 Fix AnnexB parsing in some cases 2 月之前
mpjpeg 3762bdbccd Fix mjpeg source for Foscam G2 camera #1258 3 月之前
mqtt e728643aad Add support Roborock source 1 年之前
nest 66de2f91b6 Fix resource leak in Nest source due to lack of closing HTTP response bodies 2 月之前
ngrok 12a7b96289 BIG core logic rewrite 1 年之前
onvif 2e9f3181d4 Fix onvif source: invalid control character in URL #662 1 年之前
opus 756be9801e Code refactoring for app module 4 月之前
pcm bf248c49c3 Add support two channel PCM family audio #580 1 年之前
probe 96504e2fb0 BIG rewrite stream info 4 月之前
roborock 96504e2fb0 BIG rewrite stream info 4 月之前
rtmp eaae7aee39 Fix stream info for publishing RTMP 4 月之前
rtsp d559ec0208 Fix wrong media values in SDP for some cameras #1278 2 月之前
shell cf4f6468f3 Simplify restart func 5 月之前
srtp 6d85b36f47 Fix homekit source panic on stop producer #734 11 月之前
stdin 96504e2fb0 BIG rewrite stream info 4 月之前
tapo 96504e2fb0 BIG rewrite stream info 4 月之前
tcp 96504e2fb0 BIG rewrite stream info 4 月之前
wav 96504e2fb0 BIG rewrite stream info 4 月之前
webrtc 2311d5eabe Change go version to 1.20 for Windows 7 support 1 月之前
webtorrent 96504e2fb0 BIG rewrite stream info 4 月之前
y4m 96504e2fb0 BIG rewrite stream info 4 月之前
yaml 05360ac284 Fix patch YAML without new line on end of file 1 年之前
README.md 96504e2fb0 BIG rewrite stream info 4 月之前

README.md

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:
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 format
  • pkg/{format}/backchanel.go - producer with only backchannel func

Useful links