-
Notifications
You must be signed in to change notification settings - Fork 0
l3d-dash/regular renditions #9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: feature/l3d-dash-old
Are you sure you want to change the base?
Conversation
This follows CMAF that only allows a shift of all timestamps. The edit list is kept, and all times in the MPD are shifting accordingly. A new test asset combining WAVE video and audio has been added. Also documented in the README.md together with video edit list support.
…ring of other representation id
Fix chunking fallback
…sim2 into l3d-dash/availabilityTimeOffset-not-needed-for-ssr
…ot-needed-for-ssr AvailabilityTimeOffset ignored for SSR
tobbee
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this looks fine. I had some minor comments. The main description text should also be scrutinized so that it is updated.
For example, it says something about implicit chunk duration which is no longer there. It also talks quite a lot about switching between low-delay and low-latency, but it may happen that you switch between low-delay and normal segments as is done in LL-HLS when you go back in the timeline.
There are also way too many commits, so it would be good to either squash them ton one, or preferably, to combine them into a few big but "independent" commits its that is possible. It may be quite some work though, so I leave that decision to you.
In the future, I think we should also support that not all chunks start with an IDR-frame, so I think it should be documented as a current limitation.
L3D-DASH Support
This pull request introduces the support for Low-Latency & Low-Delay DASH (L3D)
Functionality Overview
The L3D implementation generates individual chunks from full segments, enabling progressive media delivery. The system uses writeSubSegment to handle chunk requests and prepareChunks to divide segments into smaller temporal units. Chunk duration can be configured explicitly via URL parameters.
Main Changes
Added DASHProfileLinear profile for SSR streaming compliance
Implemented EssentialProperty with
urn:mpeg:dash:ssr:2023 schema referenceImplemented SupplementalProperty with
urn:mpeg:dash:adaptation-set-switching:2016Set
startWithSAP=1for proper stream initializationAdded SegmentSequenceProperties with
sapType=1andcadence=1to enable playback initialization on any chunkImplemented SubNumber on media Segment Template
Introduced calculateK function to compute
S@kvalue for proper segment indexingEnhanced sub-segment chunking support for low-latency & low-delay delivery
Created
SSRUI section in the URL generator for easy configurationAdded
ssrASandchunkDurSSRURL parameter for enabling Low Delay mode for both video and audio adaptation sets.Updated URL generation logic to properly handle low-delay streaming parameters
Implemented EssentialProperty with
urn:mpeg:dash:ssr:2023schema referenceImplemented SupplementalProperty with
urn:mpeg:dash:adaptation-set-switching:2016Set
startWithSAP=1for proper stream initializationImplemented SubNumber on media Segment Template
Compute
S@kUpdated dash-mpd library to v0.13.0 for improved MPD parsing and generation capabilities
Adapted to new S type struct from the updated dash-mpd library
How to generate a Low Delay URL
adaptationSetId,ssrValue;adaptationSetId,ssrValue;...where ssrValue is the value of ssr EssentialProperty (supports both video and audio adaptation set)adaptationSetId,chunkDuration;adaptationSetId,chunkDuration;...(supports both video and audio adaptation set)How to generate a L3D (Low Delay & Low Latency) URL
adaptationSetId,ssrValue;adaptationSetId,ssrValue;...where ssrValue is the value of ssr EssentialProperty (supports both video and audio adaptation set)adaptationSetId,chunkDuration;adaptationSetId,chunkDuration;...(supports both video and audio adaptation set)Supported Use Cases
Configuration example:
SSR Configuration:
1,0Switching Logic:
AS1: SSR value="0" → Next reproduction is AS0
AS0: No SSR → Final low-latency regular content
Configuration example:
SSR Configuration:
2,1;1,0chunk duration for low delay:
2,0.2;1,0.5Switching Logic:
AS2: SSR value="1" → Next reproduction is AS1
AS1: SSR value="0" → Next reproduction is AS0
AS0: No SSR → Final low-latency regular content
Configuration example:
SSR Configuration: `3,2;1,0
Switching Logic:
**AS1 (video) **: SSR value="0" → Next reproduction is AS0 (video)
AS0 (video): No SSR → Final low-latency regular content
**AS3 (audio) **: SSR value="2" → Next reproduction is AS2 (audio)
AS2 (audio): No SSR → Final low-latency regular content
Wiki Update Suggestion
1. Preparing Content for L3D Assets
Target Wiki Page: Preparing Content for livesim2
Suggested Addition: L3D Content Requirements
Add a new section covering content preparation for L3D streaming:
L3D Content Preparation
For L3D to work, content should be encoded with the following considerations:
Video Encoding Parameters: GOP size must be aligned with the chunk duration in frames (e.g. if your video has a GOP size of 6 frames and a frame rate of 30fps, the GOP duration is 6 / 30 = 0.2 seconds. The chunk duration should be a multiple of this value (e.g., 0.2, 0.4))
FFmpeg sample
gpac example
2. New URL Parameters
Target Wiki Page: URL Parameters
Suggested Addition: Low Delay Parameters
Add documentation for the new Low Delay URL parameter:
Low Delay Parameters
ssrASadaptationSetId,ssrValue;adaptationSetId,ssrValue;...wheressrValueis the next adaptation set id/livesim2/ssras_{adaptationSetId, ssrValue}/testpic_2s_low_delay/Manifest.mpdLow Delay Mode Effects: When
ssrASis specified in the URL path, the following modifications are applied to the generated MPD:DASHProfileLinearfor L3D complianceurn:mpeg:dash:ssr:2023specificationurn:mpeg:dash:adaptation-set-switching:2016specificationAdaptationSet@startWithSAP=1for proper stream access pointssapType=1andcadence=1attributesUsage Pattern:
/livesim2/[other-params]/ssras_{adaptationSetId, ssrValue}/[asset-name]/Manifest.mpdCompatibility Notes:
Suggested Addition: Low Delay Chunk Duration Parameters
Add documentation for the new Low Delay Chunk Duration URL parameter:
Low Delay Chunk Duration Parameters
chunkDurSSRadaptationSetId,chunkDur;adaptationSetId,chunkDur;...wherechunkDur/livesim2/chunkdurssr_{adaptationSetId, chunkDur}/testpic_2s_low_delay/Manifest.mpdLow Delay Chunk Duration Mode Effects: When
chunkDurSSRis specified in the URL path, the following modifications are applied to the generated MPD:Usage Pattern:
/livesim2/[other-params]/chunkdurssr_{adaptationSetId, chunkDur}/[asset-name]/Manifest.mpdCompatibility Notes:
ssrAS