Skip to content
This repository has been archived by the owner on Oct 10, 2021. It is now read-only.

This plugin was renamed to hlssink3 and is being merged upstream to GStreamer official Rust plugins https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/514

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

rafaelcaricio/gst-flexhlssink-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This plugin was renamed to hlssink3 and is being merged upstream to GStreamer official Rust plugins. Please follow the progress at https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/514

GStreamer HTTP Live Streaming Plugin

A highly configurable GStreamer HLS sink plugin. Based on the hlssink2 element. The flexhlssink is written in Rust and has various options to configure the HLS output playlist generation.

Development status

The plugin is in active development. The first release objective is to have full feature parity with the hlssink2 plugin.

Progress:

  • Support all properties exposed by the hlssink2 plugin;
  • Write TS content to fragment stream (defaults to filesystem);
  • Write HLS playlist m3u8 file;
  • Delete old fragments;
  • Signal to acquire fragment stream;
  • Signal to acquire HLS playlist stream;
  • Signal to delete a fragment file;

Example Usage

After installing GStreamer , it is possible to compile and run the flexhlsplugin.

cargo build --release

On MacOS it might be necessary to set the PKG_CONFIG_PATH environment variable:

export PKG_CONFIG_PATH="/Library/Frameworks/GStreamer.framework/Versions/Current/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}"

An example pipeline:

export PROJECT_DIR=`pwd`
gst-launch-1.0 videotestsrc is-live=true ! \
    x264enc ! h264parse ! flexhlssink target-duration=4 \
    --gst-plugin-load=${PROJECT_DIR}/target/release/libflexhlssink.dylib

In another terminal run a simple HTTP server:

cd $PROJECT_DIR
python simple_http.py

Open the example player site https://hls-js.netlify.app/demo/ and play the http://localhost:8000/playlist.m3u8 playback URL.