1856b7ace4
The HKSV recording was failing because: 1. The dataSend.data message structure was wrong - `packets` was a flat integer instead of an array of objects with `data` and `metadata` fields matching the HAP-NodeJS specification 2. Each video/audio frame was sent as a separate mediaFragment, but Home Hub expects GOP-based fragments (~2-4 seconds of accumulated data) 3. Large fragments were not chunked (max 256 KiB per chunk) Changes: - Fix HDS dataSend.data message structure to use proper packets array with nested data/metadata (dataType, dataSequenceNumber, dataChunkSequenceNumber, isLastDataChunk, dataTotalSize) - Add 256 KiB chunking for large media fragments - Buffer moof+mdat pairs in hksvConsumer and flush on keyframe boundaries (GOP-based fragmentation) - Pre-start consumer at pair-verify for instant init segment delivery - Add write-response support to HAP PUT handler for ch131 DataStream setup - Fix HAP service linking to match HAP-NodeJS reference - Add default SelectedCameraRecordingConfiguration (ch209) value - Start continuous motion generator at pair-verify with dedup protection
Modules
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
echo,expr,hassandonvifmodules receive a link to a stream. They don't know the protocol in advance. - The
execandffmpegmodules support many formats. They are identical to thehttpmodule. - The
api,app,debug,ngrok,pinggy,srtp,streamsare supporting modules.
Modules implement communication APIs: authorization, encryption, command set, structure of media packets.
Formats describe the structure of the data being transmitted.
Protocols implement transport for data transmission.
| module | formats | protocols | input | output | ingest | two-way |
|---|---|---|---|---|---|---|
alsa |
pcm |
ioctl |
yes | |||
bubble |
- | http |
yes | |||
doorbird |
mulaw |
http |
yes | yes | ||
dvrip |
- | tcp |
yes | yes | ||
echo |
* | * | yes | |||
eseecloud |
rtp |
http |
yes | |||
exec |
* | pipe, rtsp |
yes | yes | ||
expr |
* | * | yes | |||
ffmpeg |
* | pipe, rtsp |
yes | |||
flussonic |
mp4 |
ws |
yes | |||
gopro |
mpegts |
udp |
yes | |||
hass |
* | * | yes | |||
hls |
mpegts, mp4 |
http |
yes | |||
homekit |
srtp |
hap |
yes | yes | no | |
http |
adts |
http, tcp |
yes | |||
http |
flv |
http, tcp |
yes | |||
http |
h264 |
http, tcp |
yes | |||
http |
hevc |
http, tcp |
yes | |||
http |
hls |
http, tcp |
yes | |||
http |
mjpeg |
http, tcp |
yes | |||
http |
mpjpeg |
http |
yes | |||
http |
mpegts |
http, tcp |
yes | |||
http |
wav |
http, tcp |
yes | |||
http |
yuv4mpegpipe |
http, tcp |
yes | |||
isapi |
alaw, mulaw |
http |
yes | |||
ivideon |
mp4 |
ws |
yes | |||
kasa |
h264, mulaw |
http |
yes | |||
mjpeg |
ascii |
http |
yes | |||
mjpeg |
jpeg |
http |
yes | |||
mjpeg |
mpjpeg |
http |
yes | yes | ||
mjpeg |
yuv4mpegpipe |
http |
yes | |||
mp4 |
mp4 |
http, ws |
yes | |||
mpeg |
adts |
http |
yes | |||
mpeg |
mpegts |
http |
yes | yes | ||
multitrans |
rtp |
tcp |
yes | |||
nest |
srtp |
rtsp, webrtc |
yes | no | ||
onvif |
rtp |
* | yes | yes | ||
ring |
srtp |
webrtc |
yes | yes | ||
roborock |
srtp |
webrtc |
yes | yes | ||
rtmp |
flv |
rtmp |
yes | yes | yes | |
rtmp |
flv |
http |
yes | yes | ||
rtsp |
rtsp |
rtsp |
yes | yes | yes | yes |
tapo |
mpegts |
http |
yes | yes | ||
tuya |
srtp |
webrtc |
yes | yes | ||
v4l2 |
rawvideo |
ioctl |
yes | |||
webrtc |
srtp |
webrtc |
yes | yes | yes | yes |
webtorrent |
srtp |
webrtc |
yes | yes | ||
wyoming |
pcm |
tcp |
yes | |||
wyze |
- | tutk |
yes | yes | ||
xiaomi |
- | cs2, tutk |
yes | yes | ||
yandex |
srtp |
webrtc |
yes |