mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-10-07 07:12:50 +03:00
Add sub stream recording with adaptive quality playback (#24009)
* add sub stream recording with adaptive quality playback Optionally record a second, lower bitrate stream alongside the main recording stream via a `record_sub` input role and `record.sub` config block, with its own retention windows. Recordings rows now carry the stream type plus the media details needed to serve both streams from one manifest: video codec, audio presence, audio codec and rate, and a record-time keyframe index. Playback resolves coverage across both streams and merges them into a single VOD sequence, falling back to a discontinuity manifest with per-clip init segments when the media signatures differ. The player exposes a quality selector, and an auto governor picks the stream from stall time, bandwidth, codec support, and the save-data hint. * fix tests and i18n
This commit is contained in:
@@ -79,6 +79,12 @@ class Recordings(Model):
|
||||
segment_size = FloatField(default=0) # this should be stored as MB
|
||||
regions = IntegerField(null=True)
|
||||
motion_heatmap = JSONField(null=True) # 16x16 grid, 256 values (0-255)
|
||||
keyframes = JSONField(null=True) # ms offsets; NULL = unprobed (legacy rows)
|
||||
stream_type = CharField(default="main", max_length=8)
|
||||
has_audio = BooleanField(null=True) # NULL = unknown (legacy rows)
|
||||
audio_rate = IntegerField(null=True) # Hz; NULL = unknown (legacy rows)
|
||||
audio_codec = CharField(null=True, max_length=20) # NULL = unknown (legacy rows)
|
||||
video_codec = CharField(null=True, max_length=20) # NULL = unknown (legacy rows)
|
||||
|
||||
|
||||
class ExportCase(Model):
|
||||
|
||||
Reference in New Issue
Block a user