982a9a9aea
Posts a simple 'hls-segment-added' message with the segment location, start running time and duration. With hlssink2, it was possible to catch 'splitmuxsink-fragment-closed', but since hlssink3 doesn't forward that message (and hlscmafsink doesn't even use that mux), the new one was added to allow for listening for new fragments being added. I extended the existing tests to check whether this message is posted correctly. They theoretically only cover hlssink3, but hlscmafsink uses the same base class so it should be alright for now. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1677> |
||
---|---|---|
.. | ||
examples | ||
src | ||
tests | ||
build.rs | ||
Cargo.toml | ||
LICENSE-MPL-2.0 | ||
README.md |
GStreamer HTTP Live Streaming Plugin
A GStreamer HLS sink plugin. Based on the "hlssink2" element.
The hlssink3
plugin consists of hlssink3
and hlscmafsink
elements.
hlssink3
element generates traditional MPEG-TS based HLS segments
and playlist while hlscmafsink
generates CMAF
(fragmented mp4)
segments.
NOTE: hlssink3
element is feature-equivalent to the hlssink2
element.
Any pipeline that uses hlssink2
can use the hlssink3
element
and the result should be the same.
Both elements have a playlist-type
property used to control the behavior of the HLS playlist file. The
available values for this property are:
null
(default): The tag#EXT-X-PLAYLIST-TYPE
won't be present in the playlist during the pipeline processing. The playlist will be updated in sync as new segments are available, old segments are removed, keeping N segments as defined in the propertyplaylist-length
. This is the default behavior, and is compatible with how "hlssink2" works;"event"
: The playlist is updated as new segments are available, and the tag#EXT-X-PLAYLIST-TYPE:EVENT
is present during processing. No segments will be removed from the playlist."vod"
: The playlist behaves like theevent
option (a live event), but at the end of the processing, the playlist will be set to#EXT-X-PLAYLIST-TYPE:VOD
.
At the end of the processing, #EXT-X-ENDLIST
is added to the playlist
if a enable-endlist
property is enabled (default is true
).
Live playlist generation
In case of live recording with multiple playlists,
the #EXT-X-PROGRAM-DATE-TIME
tags can be useful hint for clients
when mapping each stream time to the wall-clock.
The #EXT-X-PROGRAM-DATE-TIME
tags will be written to the playlist
if enable-program-date-time
property is enabled.