Native helper binaries and the C subtitle parser bundled with
E2iPlayer. Shipped as the
enigma2-plugin-extensions-e2iplayer-deps package, built from the
OE/OpenATV feed recipe.
Component versions (bumped by hand alongside each component's own version string)
Fills in once a SONAR_TOKEN secret is added and the project is created
at sonarcloud.io (org oe-mirrors, key oe-mirrors_e2iplayer-deps) - see
the header of .github/workflows/sonarcloud.yml.
See BUILDING.md for how to build the components outside the OE feed.
Fast directory lister used by the plugin's file browser. lsdir --version
prints the version string.
Command-line argument splitter.
Python C-extension for text subtitle parsing (SRT / SSA / TTML / EBU-TT).
The TTML path uses a vendored Expat 2.8.5
(e2isubparser/src/expat, the lib/ sources of the release tarball).
Simple F4M / HDS (Adobe HTTP Dynamic Streaming) dumper. It shells out to
wget for the transfers rather than linking an HTTP library.
List bitrates: f4mdump "/path/to/wget [extra params]" "http://url.to/Manifest.f4m"
Download: f4mdump "/path/to/wget [extra params]" "http://url.to/Manifest.f4m" "/path/to/outfile" [bitrate]
Downloads VOD and live HLS (.m3u8) streams to a single file. Handles
MPEG-2 Transport Stream and fragmented MP4 / CMAF segments, EXT-X-MAP
initialization segments (fMP4 and TS), EXT-X-BYTERANGE, discontinuities,
AES-128 / SAMPLE-AES decryption, and TS segments disguised as images (an image
header in front of the MPEG-TS data is cut off).
Requires libcurl and libcrypto.
Linux: make && make install && make clean
Windows: hlsdl/msvc/BUID_WINDOWS.txt
hlsdl [options] url
-b ... Automatically choose the best quality.
-W ... Choose largest width lower or equal than this.
-H ... Choose largest height lower or equal than this.
-A ... Select audio language.
-v ... Verbose more information.
-q ... Print less to the console.
-o ... Choose name of output file ("-" alias for stdout).
-f ... Force overwriting the output file.
-R ... Resume an interrupted VOD download (keeps a <output>.hlsdl.resume sidecar).
-F ... Force ignore detection of DRM.
-u ... Set custom HTTP User-Agent header.
-h ... Set custom HTTP header.
-p ... Set proxy uri.
-C ... Cookie file (old Netscape / Mozilla format).
-k ... Allow to replace part of AES key uri - old.
-n ... Allow to replace part of AES key uri - new.
-K ... Force AES key value (hexstring).
-d ... Print the openssl decryption command.
-t ... Print the links to the .ts files.
-s ... Set live start offset in seconds.
-i ... Set live stream download duration in seconds.
-e ... Set refresh delay in seconds.
-r ... Set max retries at open.
-w ... Set max download segment retries.
-a ... Set additional url to the audio media playlist.
-c ... Treat HTTP 206 as 200 even without a range request.
Not handled (E2iPlayer routes these through its own ffmpeg/gstreamer pipeline): Widevine / PlayReady / FairPlay (CENC / cbcs), real muxing, and bit-exact remuxing across codec parameter changes.
This repository ships more than one license:
| Component | License |
|---|---|
hlsdl |
MIT — see hlsdl/LICENSE |
lsdir, cmdwrap, e2isubparser, f4mdump |
GPLv3, released as part of E2iPlayer — see its LICENSE.txt |
vendored Expat (in e2isubparser) |
MIT |
vendored VLC / FFmpeg subtitle snippets (in e2isubparser) |
LGPL 2.1+ |
vendored librtmp from rtmpdump v2.6 (in f4mdump) |
LGPL 2.1 — see f4mdump/ext/librtmp/COPYING |
vendored TinyXML-2 11.0.0 (in f4mdump) |
zlib |
The E2iPlayer-authored components are free software; you can redistribute them and/or modify them under the terms of the GNU General Public License as published by the Free Software Foundation. Vendored third-party code keeps its own upstream license.
Pull requests welcome. Fork, branch, commit with a clear message, open a
PR. CI (build deps) runs on every push and PR.
