gitextract_ui7an4hw/ ├── .github/ │ └── workflows/ │ ├── build.yml │ ├── gh-pages.yml │ └── test.yml ├── .gitignore ├── LICENSE ├── README.md ├── docker/ │ ├── Dockerfile │ ├── README.md │ ├── hardware.Dockerfile │ └── rockchip.Dockerfile ├── examples/ │ ├── go2rtc_hass/ │ │ └── main.go │ ├── go2rtc_mjpeg/ │ │ └── main.go │ ├── go2rtc_rtsp/ │ │ └── main.go │ ├── homekit_info/ │ │ └── main.go │ ├── mdns/ │ │ └── main.go │ ├── mod_pinggy/ │ │ ├── go.mod │ │ ├── go.sum │ │ └── main.go │ ├── onvif_client/ │ │ ├── README.md │ │ └── main.go │ ├── rtsp_client/ │ │ └── main.go │ └── tutk_decoder/ │ ├── README.md │ └── main.go ├── go.mod ├── go.sum ├── internal/ │ ├── README.md │ ├── alsa/ │ │ ├── README.md │ │ ├── alsa.go │ │ └── alsa_linux.go │ ├── api/ │ │ ├── README.md │ │ ├── api.go │ │ ├── config.go │ │ ├── static.go │ │ └── ws/ │ │ ├── README.md │ │ └── ws.go │ ├── app/ │ │ ├── README.md │ │ ├── app.go │ │ ├── config.go │ │ ├── log.go │ │ └── storage.go │ ├── bubble/ │ │ ├── README.md │ │ └── bubble.go │ ├── debug/ │ │ ├── README.md │ │ ├── debug.go │ │ └── stack.go │ ├── doorbird/ │ │ ├── README.md │ │ └── doorbird.go │ ├── dvrip/ │ │ ├── README.md │ │ └── dvrip.go │ ├── echo/ │ │ ├── README.md │ │ └── echo.go │ ├── eseecloud/ │ │ ├── README.md │ │ └── eseecloud.go │ ├── exec/ │ │ ├── README.md │ │ └── exec.go │ ├── expr/ │ │ ├── README.md │ │ └── expr.go │ ├── ffmpeg/ │ │ ├── README.md │ │ ├── api.go │ │ ├── device/ │ │ │ ├── README.md │ │ │ ├── device_bsd.go │ │ │ ├── device_darwin.go │ │ │ ├── device_unix.go │ │ │ ├── device_windows.go │ │ │ └── devices.go │ │ ├── ffmpeg.go │ │ ├── ffmpeg_test.go │ │ ├── hardware/ │ │ │ ├── README.md │ │ │ ├── hardware.go │ │ │ ├── hardware_bsd.go │ │ │ ├── hardware_darwin.go │ │ │ ├── hardware_unix.go │ │ │ └── hardware_windows.go │ │ ├── jpeg.go │ │ ├── jpeg_test.go │ │ ├── producer.go │ │ ├── version.go │ │ └── virtual/ │ │ ├── virtual.go │ │ └── virtual_test.go │ ├── flussonic/ │ │ ├── README.md │ │ └── flussonic.go │ ├── gopro/ │ │ ├── README.md │ │ └── gopro.go │ ├── hass/ │ │ ├── README.md │ │ ├── api.go │ │ └── hass.go │ ├── hls/ │ │ ├── README.md │ │ ├── hls.go │ │ ├── session.go │ │ └── ws.go │ ├── homekit/ │ │ ├── README.md │ │ ├── api.go │ │ ├── homekit.go │ │ └── server.go │ ├── http/ │ │ ├── README.md │ │ └── http.go │ ├── isapi/ │ │ ├── README.md │ │ └── init.go │ ├── ivideon/ │ │ ├── README.md │ │ └── ivideon.go │ ├── kasa/ │ │ ├── README.md │ │ └── kasa.go │ ├── mjpeg/ │ │ ├── README.md │ │ └── mjpeg.go │ ├── mp4/ │ │ ├── README.md │ │ ├── mp4.go │ │ └── ws.go │ ├── mpeg/ │ │ ├── README.md │ │ └── mpeg.go │ ├── multitrans/ │ │ ├── README.md │ │ └── multitrans.go │ ├── nest/ │ │ ├── README.md │ │ └── init.go │ ├── ngrok/ │ │ ├── README.md │ │ └── ngrok.go │ ├── onvif/ │ │ ├── README.md │ │ └── onvif.go │ ├── pinggy/ │ │ ├── README.md │ │ └── pinggy.go │ ├── ring/ │ │ ├── README.md │ │ └── ring.go │ ├── roborock/ │ │ ├── README.md │ │ └── roborock.go │ ├── rtmp/ │ │ ├── README.md │ │ └── rtmp.go │ ├── rtsp/ │ │ ├── README.md │ │ └── rtsp.go │ ├── srtp/ │ │ ├── README.md │ │ └── srtp.go │ ├── streams/ │ │ ├── README.md │ │ ├── add_consumer.go │ │ ├── api.go │ │ ├── api_test.go │ │ ├── dot.go │ │ ├── handlers.go │ │ ├── helpers.go │ │ ├── play.go │ │ ├── preload.go │ │ ├── producer.go │ │ ├── publish.go │ │ ├── stream.go │ │ ├── stream_test.go │ │ └── streams.go │ ├── tapo/ │ │ ├── README.md │ │ └── tapo.go │ ├── tuya/ │ │ ├── README.md │ │ └── tuya.go │ ├── v4l2/ │ │ ├── README.md │ │ ├── v4l2.go │ │ └── v4l2_linux.go │ ├── webrtc/ │ │ ├── README.md │ │ ├── candidates.go │ │ ├── client.go │ │ ├── client_creality.go │ │ ├── kinesis.go │ │ ├── milestone.go │ │ ├── openipc.go │ │ ├── server.go │ │ ├── switchbot.go │ │ ├── webrtc.go │ │ └── webrtc_test.go │ ├── webtorrent/ │ │ ├── README.md │ │ ├── init.go │ │ └── tracker.go │ ├── wyoming/ │ │ ├── README.md │ │ └── wyoming.go │ ├── wyze/ │ │ ├── README.md │ │ └── wyze.go │ ├── xiaomi/ │ │ ├── README.md │ │ └── xiaomi.go │ └── yandex/ │ ├── README.md │ ├── goloom.go │ └── yandex.go ├── main.go ├── package.json ├── pkg/ │ ├── README.md │ ├── aac/ │ │ ├── README.md │ │ ├── aac.go │ │ ├── aac_test.go │ │ ├── adts.go │ │ ├── consumer.go │ │ ├── producer.go │ │ ├── rtp.go │ │ └── rtp_test.go │ ├── alsa/ │ │ ├── README.md │ │ ├── capture_linux.go │ │ ├── device/ │ │ │ ├── asound_32bit.go │ │ │ ├── asound_64bit.go │ │ │ ├── asound_arch.c │ │ │ ├── asound_mipsle.go │ │ │ ├── device_linux.go │ │ │ └── ioctl_linux.go │ │ ├── open_linux.go │ │ └── playback_linux.go │ ├── ascii/ │ │ ├── README.md │ │ └── ascii.go │ ├── bits/ │ │ ├── reader.go │ │ └── writer.go │ ├── bubble/ │ │ ├── client.go │ │ └── producer.go │ ├── core/ │ │ ├── README.md │ │ ├── codec.go │ │ ├── connection.go │ │ ├── core.go │ │ ├── core_test.go │ │ ├── helpers.go │ │ ├── listener.go │ │ ├── media.go │ │ ├── media_test.go │ │ ├── node.go │ │ ├── readbuffer.go │ │ ├── readbuffer_test.go │ │ ├── slices.go │ │ ├── track.go │ │ ├── track_test.go │ │ ├── waiter.go │ │ ├── worker.go │ │ └── writebuffer.go │ ├── creds/ │ │ ├── README.md │ │ ├── creds.go │ │ ├── secrets.go │ │ └── secrets_test.go │ ├── debug/ │ │ ├── conn.go │ │ └── debug.go │ ├── doorbird/ │ │ └── backchannel.go │ ├── dvrip/ │ │ ├── backchannel.go │ │ ├── client.go │ │ ├── dvrip.go │ │ └── producer.go │ ├── eseecloud/ │ │ └── eseecloud.go │ ├── expr/ │ │ ├── expr.go │ │ └── expr_test.go │ ├── ffmpeg/ │ │ ├── README.md │ │ └── ffmpeg.go │ ├── flussonic/ │ │ └── flussonic.go │ ├── flv/ │ │ ├── amf/ │ │ │ ├── amf.go │ │ │ └── amf_test.go │ │ ├── consumer.go │ │ ├── flv_test.go │ │ ├── muxer.go │ │ └── producer.go │ ├── gopro/ │ │ ├── discovery.go │ │ └── producer.go │ ├── h264/ │ │ ├── README.md │ │ ├── annexb/ │ │ │ ├── annexb.go │ │ │ └── annexb_test.go │ │ ├── avc.go │ │ ├── avcc.go │ │ ├── h264.go │ │ ├── h264_test.go │ │ ├── mpeg4.go │ │ ├── payloader.go │ │ ├── rtp.go │ │ └── sps.go │ ├── h265/ │ │ ├── README.md │ │ ├── avc.go │ │ ├── avcc.go │ │ ├── h265_test.go │ │ ├── helper.go │ │ ├── mpeg4.go │ │ ├── payloader.go │ │ ├── rtp.go │ │ └── sps.go │ ├── hap/ │ │ ├── README.md │ │ ├── accessory.go │ │ ├── camera/ │ │ │ ├── README.md │ │ │ ├── accessory.go │ │ │ ├── accessory_test.go │ │ │ ├── ch114_supported_video.go │ │ │ ├── ch115_supported_audio.go │ │ │ ├── ch116_supported_rtp.go │ │ │ ├── ch117_selected_stream.go │ │ │ ├── ch118_setup_endpoints.go │ │ │ ├── ch120_streaming_status.go │ │ │ ├── ch130_data_stream_transport.go │ │ │ ├── ch131_data_stream.go │ │ │ ├── ch205.go │ │ │ ├── ch206.go │ │ │ ├── ch207.go │ │ │ ├── ch209.go │ │ │ └── stream.go │ │ ├── chacha20poly1305/ │ │ │ └── chacha20poly1305.go │ │ ├── character.go │ │ ├── client.go │ │ ├── client_http.go │ │ ├── client_pairing.go │ │ ├── conn.go │ │ ├── curve25519/ │ │ │ └── curve25519.go │ │ ├── ed25519/ │ │ │ └── ed25519.go │ │ ├── hds/ │ │ │ ├── hds.go │ │ │ └── hds_test.go │ │ ├── helpers.go │ │ ├── hkdf/ │ │ │ └── hkdf.go │ │ ├── server.go │ │ ├── setup/ │ │ │ ├── setup.go │ │ │ └── setup_test.go │ │ └── tlv8/ │ │ ├── tlv8.go │ │ └── tlv8_test.go │ ├── hass/ │ │ ├── api.go │ │ └── client.go │ ├── hls/ │ │ ├── producer.go │ │ └── reader.go │ ├── homekit/ │ │ ├── consumer.go │ │ ├── helpers.go │ │ ├── log/ │ │ │ └── debug.go │ │ ├── producer.go │ │ ├── proxy.go │ │ └── server.go │ ├── image/ │ │ └── producer.go │ ├── ioctl/ │ │ ├── README.md │ │ ├── ioctl.go │ │ ├── ioctl_be.go │ │ ├── ioctl_le.go │ │ ├── ioctl_linux.go │ │ └── ioctl_test.go │ ├── isapi/ │ │ ├── backchannel.go │ │ └── client.go │ ├── iso/ │ │ ├── atoms.go │ │ ├── codecs.go │ │ ├── iso.go │ │ └── reader.go │ ├── ivideon/ │ │ └── ivideon.go │ ├── kasa/ │ │ └── producer.go │ ├── magic/ │ │ ├── bitstream/ │ │ │ └── producer.go │ │ ├── keyframe.go │ │ ├── mjpeg/ │ │ │ └── producer.go │ │ └── producer.go │ ├── mdns/ │ │ ├── README.md │ │ ├── client.go │ │ ├── mdns_test.go │ │ ├── server.go │ │ ├── syscall.go │ │ ├── syscall_bsd.go │ │ └── syscall_windows.go │ ├── mjpeg/ │ │ ├── README.md │ │ ├── consumer.go │ │ ├── helpers.go │ │ ├── jpeg.go │ │ ├── mjpeg_test.go │ │ ├── rfc2435.go │ │ ├── rtp.go │ │ └── writer.go │ ├── mp4/ │ │ ├── README.md │ │ ├── consumer.go │ │ ├── demuxer.go │ │ ├── helpers.go │ │ ├── keyframe.go │ │ ├── mime.go │ │ └── muxer.go │ ├── mpegts/ │ │ ├── README.md │ │ ├── checksum.go │ │ ├── consumer.go │ │ ├── demuxer.go │ │ ├── muxer.go │ │ ├── opus.go │ │ └── producer.go │ ├── mpjpeg/ │ │ ├── multipart.go │ │ └── producer.go │ ├── mqtt/ │ │ ├── client.go │ │ └── message.go │ ├── multitrans/ │ │ └── client.go │ ├── nest/ │ │ ├── api.go │ │ └── client.go │ ├── ngrok/ │ │ └── ngrok.go │ ├── onvif/ │ │ ├── README.md │ │ ├── client.go │ │ ├── envelope.go │ │ ├── helpers.go │ │ ├── onvif_test.go │ │ └── server.go │ ├── opus/ │ │ ├── README.md │ │ ├── homekit.go │ │ └── opus.go │ ├── pcm/ │ │ ├── backchannel.go │ │ ├── flac.go │ │ ├── handlers.go │ │ ├── pcm.go │ │ ├── pcm_test.go │ │ ├── pcma.go │ │ ├── pcmu.go │ │ ├── producer.go │ │ ├── producer_sync.go │ │ ├── s16le/ │ │ │ └── s16le.go │ │ └── v1/ │ │ ├── pcm.go │ │ └── pcm_test.go │ ├── pinggy/ │ │ └── pinggy.go │ ├── probe/ │ │ └── consumer.go │ ├── ring/ │ │ ├── api.go │ │ ├── client.go │ │ ├── snapshot.go │ │ └── ws.go │ ├── roborock/ │ │ ├── api.go │ │ ├── client.go │ │ ├── iot/ │ │ │ ├── client.go │ │ │ └── crypto.go │ │ └── producer.go │ ├── rtmp/ │ │ ├── README.md │ │ ├── client.go │ │ ├── conn.go │ │ ├── flv.go │ │ └── server.go │ ├── rtsp/ │ │ ├── README.md │ │ ├── client.go │ │ ├── client_test.go │ │ ├── conn.go │ │ ├── consumer.go │ │ ├── helpers.go │ │ ├── producer.go │ │ ├── rtsp_test.go │ │ └── server.go │ ├── shell/ │ │ ├── command.go │ │ ├── procattr.go │ │ ├── procattr_linux.go │ │ ├── shell.go │ │ └── shell_test.go │ ├── srtp/ │ │ ├── server.go │ │ └── session.go │ ├── tapo/ │ │ ├── backchannel.go │ │ ├── client.go │ │ └── producer.go │ ├── tcp/ │ │ ├── auth.go │ │ ├── dial.go │ │ ├── request.go │ │ ├── textproto.go │ │ ├── textproto_test.go │ │ └── websocket/ │ │ ├── client.go │ │ └── dial.go │ ├── tutk/ │ │ ├── codec.go │ │ ├── conn.go │ │ ├── crypto.go │ │ ├── crypto_test.go │ │ ├── dtls/ │ │ │ ├── auth.go │ │ │ ├── cipher.go │ │ │ ├── conn_dtls.go │ │ │ └── dtls.go │ │ ├── frame.go │ │ ├── helpers.go │ │ ├── session0.go │ │ ├── session16.go │ │ └── session25.go │ ├── tuya/ │ │ ├── README.md │ │ ├── client.go │ │ ├── cloud_api.go │ │ ├── helper.go │ │ ├── interface.go │ │ ├── mqtt.go │ │ └── smart_api.go │ ├── v4l2/ │ │ ├── device/ │ │ │ ├── README.md │ │ │ ├── device.go │ │ │ ├── formats.go │ │ │ ├── videodev2_386.go │ │ │ ├── videodev2_arch.c │ │ │ ├── videodev2_arm.go │ │ │ ├── videodev2_mipsle.go │ │ │ └── videodev2_x64.go │ │ └── producer.go │ ├── wav/ │ │ ├── backchannel.go │ │ ├── producer.go │ │ └── wav.go │ ├── webrtc/ │ │ ├── README.md │ │ ├── api.go │ │ ├── client.go │ │ ├── client_test.go │ │ ├── conn.go │ │ ├── consumer.go │ │ ├── helpers.go │ │ ├── producer.go │ │ ├── server.go │ │ ├── track.go │ │ └── webrtc_test.go │ ├── webtorrent/ │ │ ├── client.go │ │ ├── crypto.go │ │ └── server.go │ ├── wyoming/ │ │ ├── README.md │ │ ├── api.go │ │ ├── backchannel.go │ │ ├── expr.go │ │ ├── mic.go │ │ ├── producer.go │ │ ├── satellite.go │ │ ├── snd.go │ │ ├── wakeword.go │ │ └── wyoming.go │ ├── wyze/ │ │ ├── backchannel.go │ │ ├── client.go │ │ ├── cloud.go │ │ └── producer.go │ ├── xiaomi/ │ │ ├── cloud.go │ │ ├── crypto/ │ │ │ └── crypto.go │ │ ├── legacy/ │ │ │ ├── client.go │ │ │ └── producer.go │ │ ├── miss/ │ │ │ ├── backchannel.go │ │ │ ├── client.go │ │ │ ├── cs2/ │ │ │ │ └── conn.go │ │ │ └── producer.go │ │ └── producer.go │ ├── xnet/ │ │ ├── net.go │ │ └── tls/ │ │ └── tls.go │ ├── y4m/ │ │ ├── README.md │ │ ├── consumer.go │ │ ├── producer.go │ │ └── y4m.go │ ├── yaml/ │ │ ├── yaml.go │ │ └── yaml_test.go │ └── yandex/ │ └── session.go ├── scripts/ │ ├── README.md │ ├── build.cmd │ └── build.sh ├── website/ │ ├── .vitepress/ │ │ └── config.js │ ├── README.md │ ├── api/ │ │ ├── index.html │ │ └── openapi.yaml │ ├── manifest.json │ └── webtorrent/ │ └── index.html └── www/ ├── README.md ├── add.html ├── config.html ├── hls.html ├── index.html ├── links.html ├── log.html ├── main.js ├── net.html ├── schema.json ├── static.go ├── stream.html ├── video-rtc.js ├── video-stream.js ├── webrtc-sync.html └── webrtc.html