The main goal of o11 is to convert LIVE and VOD streams to a friendly protocol such as HLS and/or direct HTTP MPEG-TS.
The following input formats are currently supported:
- DASH
- HLS
- Microsoft Smooth Streaming
Main pages
In this section will be described the main features of each page from taskbar.
ProvidersThis page is the default one, it’s a clickable list of the available providers.
o11 supports multiple providers. Each provider will have its own set of streams and its own network configuration.
Go to Providers tab, select a provider name and click on Add New Provider. Provider configuration files will be stored into providers/ by default. This path can be changed using -providers [path] from command-line.
You can also import a new proviser using the Import button. The format is either a text file, a m3u or an o11 cfg file.
VODYou will find on this page the list of VOD available in the selected provider.
RecordingsIn this page you can setup stream recordings.
UsersThis page is used to manage users access.
When adding a new user, the following options are available:
- Password the password for the selected user.
- Providers the list of providers the user has access to. If the Admin option is selected, the user has access to all providers
- Networks allowed network for user. If nothing is selected, the user can access o11 from any ip.
- Admin set user as admin. Only admin users can access the Users and Config pages.
- WebAccess allow Web UI access to user.
LinearAll linear streams are listed in this page.
Eeach linear channel can be started from this page. You can also play it using the internal player, go to logs or settings. You will also be able to copy the link to this stream. Note that playback will mostly fail under Chrome if the audio track is AC3 or other type of complex audios.
EventsYou will find on this page the Schedule list for events and the available recorded events (Replays). The list of events is retrieved using the provider script, please look at section below.
Schedule can also be accessed using the -epgport command line option and going to http://ip:epgport/providerid. An XMLEPG version is also accessible at http://ip:epgport/providerid.xml or http://ip:epgport/providerid.xml.gz.
Each new event gets a eventN id. N is an unique incremental number. If you want to access on air events, you should use the special id onairN, where N will never exceed the number of events running simultaneously. This onairN id is only valid during the live window of the event.
The second table is the list of replays (recorded events). They are accessible trough the given link or will be automatically played using their original event link when finished.
MonitoringYou will find on this page all active connections and some informations about the system status.
EPGIn this page, you will be able to access EPG for each channel.
LogsIn this page, you will be able to access logs for each channel as well as the main log. The channel logging verbosity can be configured on the configuration page.
ConfigRunning/Output Mode
o11 supports 5 running modes:
- Internal remuxer – (default mode) this mode works without FFmpeg, the remuxing operations are done internally. All output modes are available in this this mode. No file is written on disk.
- FFmpeg resident – FFmpeg must be installed. A FFmpeg process is spawned when the stream is started and will keep running until the channel is stopped. All output modes are available in this this mode.
- FFmpeg TS HLS/Direct – FFmpeg must be installed. On each new segment, FFmpeg is spawn to convert it to a HLS fragment. CPU load is higher in this mode because FFmpeg is started on every new segment.
- FFmpeg MultiTS HLS – FFmpeg must be installed. On each new segment, FFmpeg is spawn to convert it to a HLS video or audio fragment. It results in a multi TS HLS playlist.
- FMP4 HLS – this mode works without FFmpeg. The input stream is converted to FMP4 HLS. No file is written on disk.
o11 supports 4 output modes when Internal Remuxer or Resident FFmpeg running modes are selected:
- HLS/Direct – the input stream is converted to HLS and can also be retrieved in direct HTTP mode.
- SRT Server – the stream is available through the SRT server.
- Custom Pipe – the stream is pushed to a linux pipe and processed by a custom command defined by the -pipeoutputcmd command line parameter.
- UDP/SRT Push – the stream is pushed to a linux pipe and processed by tsplay when using FFmpeg mode. When using internal remuxer, it does not use tsplay. The output destination is defined per channel by the Output field. It should be a space separated list of udp://ip:port or srt://ip:port.
Script
Script name (without it’s extension, so example.py becomes example), followed that parameters that will be passed to that script). Other parameters like the action, the network config, etc., are automatically passed as parameters too. Check the Scripts paragraph for more details.
Update Linear
Call the script to update the channels list. If you select auto refresh, channels that are not in the list sent by the script will be removed unless the Ignore Update option is checked.
Refresh Events
Call the script to udpate the events list. It can be automated by clicking on auto refresh. If you select auto refresh, channels that are not in the list sent by the script will be removed unless the Ignore Update option is checked.
Network
Network options can be configured globally for a provider and then overridden per stream.
All these network parameters can be overridden per channel, selecting the NetworkOverride option.
Don’t forget to press APPLY NETWORK for the changes to take effect. If you set global network parameters while streams are running some streams can crash.
You can select individually a network connection for Scripts/Manifests/Media calls. You can also set a Worker host for each of them, every request will use this host. The real host is passed as an extra header Original-Host.
- System – use system network configuration.
- Same as ... – use the same network configuration as…
- HTTP/SOCKS5 Proxy – coma separated list of proxies. Format is http://user:pass@ip:port for HTTP proxies and socks5://user:pass@ip:port for SOCKS5 proxies.
- Bind – coma separated list of ips or interface names.
- DNS over HTTPS – coma separated list of DOH servers.
Parameters
A bunch of additional parameters can be set here. For more info, put your cursor on the parameter to bring the tooltip.
Script accounts
A list of accounts to use with the script. If the account is enabled and selected (next to the script field or per channel next to the script params field), it’s info will be passed when calling the script. For instance, [email protected] password=mypassword device=123456 pin=1234
The login button can be used to call the script with the login action, to test if the account works. The script must print 'logged in' to validate the login. The pair button can be used to call the script with the pair action.
Channels
To add a new channel to a provider, go to Config tab and press ADD NEW STREAM after entering its name in the field.
To delete a stream, click on its checkbox and press DELETE SELECTION. If the stream was running, it will be stopped first, then deleted.
Stream configuration
- Start/Stop – to start or stop the stream.
- Name – the name of the stream. This is also a clickable link that will start the internal player. You can also copy this link (HLS) to use in another player.
- Status – the status of the stream.
- Mode – Linear, Replay or VOD. Linear mode is for a live channel. Replay will trigger a fetch of all the fragments from the manifest and generate a HLS output stream. VOD can be used to get VOD stream and generate mp4 file.
- Manifest – setup the manifest url. If SessionManifest – option is selected, the provider script will be called if needed. please check the Scripts section for more details. Network ovverride fields will also appear in the box when the NetworkOverride option is selected. Press the button to parse the manifest and refresh the tracks list.
- Tracks – list of selectable Video/Audio/Subtitles tracks. Only one Video track can be selected. The Best quality option is seletected by default and let o11 take the best resolution/bandwidth/framrate. Multiple audio and subtiltes tracks can be selected.
- Keys or CDM Script – set the decryption keys for the stream. On line per kid:key. If UseCdm is selected, o11 will try to call the selected provider script to get keys using the specified parametersm. Please check the Scripts section for more detail.
- Options – please see the Stream options section.
Streaming Parameters
- Detect SSAI – Try to detect Server Side Insertion inside manifest. Some streams require this option to work correctly.
- Detect CTV – Try to detect CTV stream inside manifest. Some streams require this option to work correctly.
- Force HLS TS – Force fragment type of HLS input streams to MPEG-TS.
- Force HLS FMP4 – Force fragment type of HLS input streams to fragmented MP4.
- Ignore DASH static flag – Treat all DASH input streams as live/linear, regardless of their mode.
- Use DASH Location – Use Location value from DASH manifest to grab next manifest.
- Use session cookies – Use cookies set by manifest retrieval for media files retrieval. Mandatory for some providers.
- No referer in redirects – Don’t set the Referer header during http redirects files retrieval. Mandatory for some providers.
- Use DASH delay – Delay DASH playback based on manifest info.
- Use DASH newest period – Always use the newest period in DASH manifest.
- Legacy DASH parser – Use legacy DASH parser. This parser should be slower but may be worth a try if a DASH parsing issue occurs.
- Use manifest URL params for segments – When manifest URL comes with URL parameters (?param1=…¶m2=…), forward these parameters to the HLS sub-manifests and the HLS/DASH media files, only if they don’t already include any. Mandatory for some providers.
- Force manifest URL params for segments – When manifest URL comes with URL parameters (?param1=…¶m2=…), always forward these parameters to the HLS sub-manifests and the HLS/DASH media files. Mandatory for some providers. This option overrides the previous one.
- Detect special JSON redirect URL – Some providers use a special way to redirect manifest URL. They return a 200 with a JSON that includes the URL to use. Format is a string array named ‘Locations’.
- Don't wait for full playlist – When a stream starts, the output stream becomes available when at least ‘Output fragments count’ are available (look below). This option allows to make the output stream available without waiting for this value to be reached.
- Pre-process PSSH – Call script with action=pssh and the pssh value before processing it. This allows a pre-processing on the PSSH.
- Fix PSSH – Some weird PSSH need this option to work.
- Don't use keys cache – For providers using the same KID for all streams, use this option.
- Always select default tracks – Always select default tracks on stream start.
- Push keys to archive – Call archive script with action=pushkey for each new key from CDM.
- Use media network for HLS key – Use media network for HLS key instead of manifest one.
- Default CDN – CDN name to be used by default, when multiple CDN manifest URLs are available. The name must match the name of the CDN defined in the stream config. Default is Empty (no filter).
- Default video – Default video streams to select. Each filter can be an extract of the real stream description. For example, ‘720p’ will match ‘720p30’, ‘720p60′,…’. Multiple filters can be defined, ‘|’ separated. Default is Empty (no filter).
- Default audio – Default audio streams to select. Each filter can be an extract of the real stream description. For example, ‘Eng’ will match ‘English’. Multiple filters can be defined, ‘|’ separated. Default is Empty (no filter).
- Default subtitles – Default subtitles streams to select. Each filter can be an extract of the real stream description. For example, ‘Eng’ will match ‘English’. Multiple filters can be defined, ‘|’ separated. Default is Empty (no filter).
- HLS playlist duration (s) – Duration of the HLS output playlist. Duration is the sum of all fragments’ duration. For instance, 15 means 5 fragments if they are 3 seconds each. There can’t be fewer than 5 fragments. This value is ignored if ‘Output fragments count’ is not 0. Default is 15 seconds.
- HTTP get timeout – HTTP call timeout. This value is automatically increased to 24 hours for VOD streams. Default is 30 seconds.
- HTTP get tentatives count – Number of times to retry to get a manifest or a media file. Default is 2 times.
- HLS fragments duration (s) – Duration of output fragments. This value is ignored in FFmpeg TS HLS/Direct output mode that will use the value from input stream. Default is 0 (HLS playlist duration).
- Output fragments count – Force the number of fragments in the HLS output playlist. Default is auto, using HLS playlist duration.
- Stalled stream timeout (s) – Time to wait before detecting an input stream as stalled (no new fragment). Default is 60.
- Playback Delay (s) – Add a playback delay to the input stream, ignoring newest fragments. Default is 0 (no delay).
- CDM provider ID – provider ID to pass when calling keys archive and external CDM scripts.
- DRM level – DRM level to pass to external CDM script.
- Max streams concurrency – Max number of streams that can run simultaneously in this provider. Default is 0 (no limit).
- Retry new manifest count – Number of times to re-try to get a new manifest (using the script), if the current one fails. This only works when ‘Session Manifest’ is enabled. Default is 1 (re-try once).
- Max streams per account – Max number of streams that can be started for a unique script account. Default is 0 (no limit).
- Max download concurrency – Max number of concurrent media retrieval per stream (when using SpeedUp mode). Default is 50.
- Max concurrent script calls – Max number of concurrent calls to the provider script. Default is 0 (no limit).
Channels/events parameters
- Reuse event index – Events retrieved from a script get an autogenerated stream id called “eventN” where N is an always increasing number. If this option is set, N will reuse available numbers, that were freed by deleted events.
- Reversed events ids – Instead of an always increasing number, N from ‘eventN’ will be decreased for each new event. Don’t forget to set ‘Events first ID’ to a high value or you will quickly run out of possible numbers (1 being the lower one).
- Auto-remove missing channels – When updating linear channels from script, remove from O11 the channels that are not listed anymore. This option is ignored for channels with the ‘Ignore update’ option set.
- Don't add new channels on refresh – When updating linear channels from script, don’t add new ones, only update existing ones.
- Auto-refresh channels – Periodically refresh channels from script. Refresh period is defined in ‘Channels refresh period’.
- Auto-refresh events – Periodically refresh events from script. Refresh period is defined in ‘Events refresh period’.
- Don't auto-remove finished events – When updating events from script, do not remove from O11 the events that are finished. This option is ignored for channels with the ‘Ignore update’ option set.
- Allow duplicate events – When updating events from script, allow 2 events with the the same config and similar start time.
- Events first ID – The first ID number to use for eventN streams. Default is 0.
- Channels update period (s) – Period to update channels list (linear streams). Default is 0 (no auto-update).
- Max days of events from now – Maximum number of days to retrieve events from script. Default is 365 days.
- Channels refresh period (s) – Period to refresh the channels list. This is used only if ‘Auto-refresh channels’ is set. Default is 3600 seconds (1 hour).
- Events refresh period (s) – Period to refresh the events list. This is used only if ‘Auto-refresh events’ is set. Default is 3600 seconds (1 hour).
- Max events count – Max number of events to add from script. Default is 0 (no limit).
- EPG refresh period (s) – Refresh period of EPG if ‘Auto-refresh EPG’ is set. Default is 86400 seconds (1 day).
- Timezone – Timezone used to generate dates. This is used for XML EPG, remote DB update, replays. Default is UTC.
- Events SQL URL – SQL URL where to send new events. Format is user:password@tcp(ip:port)/dbname.
- SQL Stream URL – Stream URL to use when sending it to SQL URL. Format is https://user:pass@ip.
- Logo URL – Logo path for provider URL. Default is /logos/[providerid].png
- Script timeout (s) – Max time to wait for a script call to return. When the timeout is reached, the call exits with a ‘killed’ error. Default is 30 seconds.
- Events first ID – First ID for events. This ID is the N value from ‘eventN’. This is important when setting ‘Reversed events ids’. Default is 0 (this must be changed).
- Event filters – Events filtering allows creating special static links for events. These events are called ‘Filtered events’. For instance, let’s say that you want a static link for every daily news on Channel1. You know that the event is always called ‘[DATE] Channel1 News’. Then you must create a filter called ‘Channel1 News’. This will auto-create a new event (available in the events tab and in EPG). This special event will always point to the events that match the filter, when they are On-Air. Multiple events can be defined | separated. Additional words ca be added & separated It is also possible to define multiple filters per entry, ‘#’ separated. For instance ‘Channel1 News#Channel1 Daily News’. The filter match is on words, not on each char and is case sensitive. Final format is: filter1#alt1#…|filter2|…
- Don't Gzip EPG in playlist – Send EPG as non-gzipped XML in playlist.
- Dont' cool down event start – Dont’ cool down event start. That could cause script call flood.
- Delete removed streams logs – Remove logs from a stream when it’s deleted.
Start parameters
- Always reset session – When starting a stream and if ‘Session Manifest’ is selected, always call the provider script to get a fresh session manifest. Mandatory for some providers.
- No restart on error – Don’t auto-restart a stream when it exits due to an error. Useful for debugging failing streams.
- Restart finished broadcast – When a stream exits because it was detected that the broadcast ended (due to a static flag in the DASH manifest, for instance), auto-restart it. The default behavior is to NOT restart it.
- No restart on track change – When the tracks list changes in a stream, it is restarted unless this option is set.
- Always auto-restart on failure – When a stream fails to start, without even successfully getting the first media file, it is not auto-restarted because it usually means that subsequent starts will also fail. This option makes the stream always restart regardless of the failing reason.
- Cooldown streams auto-restart – Try to cooldown streams auto-restart to avoid 2 streams restarting at the same time.
- Try next CDN on failure – When a stream fails to start, jump to next CDN on next run.
- Restart delay (s) – Time to wait before restarting a stream. Default is 30 seconds.
- Autorestart period (s) – Automatically restart streams every N seconds. Default is 0 (no auto-restart).
- Autorestart random offset (s) – When ‘Autorestart period’ is set, add a random value to the period. Default is 0 (no random value).
- Random autostart period (s) – When starting O11 for the first time, start all streams with a random delay between 0 and this value. Default is 0 (no random delay).
- Seq autostart period (s) – When starting O11 for the first time, start all streams sequentially every N seconds. Default is 0 (no sequential start).
DVB Subtitles
- Disable DVBSubs colors – Ignore color tags in the input subtitles description.
- Disable DVBSubs style – Ignore special styles in the input subtitles. This fixes some providers with complex subtitles.
- Use provider script for DVBSubs – Call provider script for each subtitle. This allows for operations like translations.
- Add overlay on picture – Add a picture overlay on the output stream. The picture must be stored in ‘overlay/[providerid.png’. This option only works with FFmpeg TS HLS/Direct and resident modes. Warning: This option consumes a lot of CPU as all frames are transcoded. Consider using a GPU by selecting the right option in ‘HW accel for burned subtitles’.
- Always transcode – Always transcode all frames when burning subtitles. This resolves some output stream issues. If not set, only frames with subtitles will be transcoded. This option only works with FFmpeg TS HLS/Direct mode.
- Use X-TIMESTAMP-MAP for VTT – Use X-TIMESTAMP-MAP from VTT input streams to extract subtitles timestamps. Mandatory for some providers.
- DVBSubs colors filter – Only output the specified subtitles colors (as well as the default color). Format is color1, color2,… Default is all colors.
- DVBSubs translation src – When ‘Use provider script for DVBSubs’ is selected, select the input stream subtitles language to be passed to the script.
- Max autorestart tentative – How many times it will try to restart a failing stream before giving up. 0 means no limit.
- DVBSubs translation dest – When ‘Use provider script for DVBSubs’ is selected, select the output stream subtitles language to be passed to the script.
- DVBSubs size – DVBSubs size can be adjusted with this value, from 0 to 100%. Default is 100 (%).
- DVBSubs Vertical Offset – DVBSubs vertical offset can be adjusted with this value, from 0 to 100%. Default is 96 (%).
- DVBSubs quality – Select DVBSubs subtitles quality from low to high. A better quality means higher CPU consumption. Default is medium.
- Burn message – Burn a static message in the output stream. This option only works with FFmpeg TS HLS/Direct and resident modes. Default is no message.
- HW accel for burned subtitles – Select HW acceleration to burn subtitles, overlay, or messages. Nvidia and QSV are currently supported options. This defines the options passed to FFmpeg. This option only works with FFmpeg TS HLS/Direct and resident modes. Default is no HW acceleration (full CPU).
Misc
- X-Forwarded-For – Default X-Forwarded-For to be sent to all HTTP requests, unless overridden by the Headers defined below and in each stream. Default is none.
- Pipe command (READ-ONLY) – When using ‘Custom’ ‘Output Mode’, this is the command that will be run using the stream as input PIPE. The %s value is replaced by the ‘Pipe’ field for each channel. This allows, for instance, to define a custom UDP destination. Default is ‘tsplay -stdin %s’. This value CAN’T be edited for obvious security reasons.
- User Agent – Default User-Agent header to be sent to all HTTP requests, unless overridden by the Headers defined below and in each stream. Default value can be changed from the command-line.
- Manifest Headers – Headers to be passed to every manifest HTTP call. Format is { ‘Header1’: ‘Value’, ‘Header2’: ‘Value’ }
- Media Headers – Headers to be passed to every media HTTP call. Format is { ‘Header1’: ‘Value’, ‘Header2’: ‘Value’ }
Stream options
Several options can be selected for each stream.
- Script params/Account selection – set the script parameters to be added to the other parameters for this channel (typically id=channelid). The account to use with this channel can be selected here, if Provider is chosen, it will use the same account as the providers’one.
- Autostart – auto start the stream when starting o11. It is possible to override this option globally using the -noautostart command-line option. If the stream is an event, it will be autostarted only during live window.
- On demand – automatically start a stream when the internal or a remote player request for it. The stream is then automatically stops when it is not used anymore. Use this option to avoid having all streams running for nothing 24/24.
- Speed up – run all segments download in parallel. It speeds up stream start.
- Session manifest – call the script to automatically get the manifest URL. Usefull when the manifest is changing (check the Scripts paragraph for more details).
- CDM script – call the script automatically get keys when needed (check the Scripts paragraph for more details).
- Network override – add new fields to override the global network configuration (check the Scripts paragraph for more details).
- Mode override – override running and output modes.
- Record event – record the event and convert it in real-time to a replay. If checked, the event will auto start during it’s live window to be recorded.
- Record TS – record the stream on the fly and streamsStore it as a MpegTs in rec/.
- Replay manifest – get all fragments from the manifest.
- Ignore update – don’t autoremove/modify this channel when using the channels or events script (check the Scripts section for more details).
- Time range – select a time range to extract from a manifest. Only works with DASH using times and not numbers.
- Daily OnAir – select a time range where the live will be automatically started every day. It will be stopped when not in this daily range. Time is localized based on browser.
- Output field – list of UPD/SRT outputs or Custom command parameters.
- Logs – set the channel logging verbosity. This will not be saved, so on next reboot, it will use the global value (set with -v N at startup).
Scripts
Scripts play a big role for o11. Each provider should have each own script. It can be either a shell script (.sh) or a python3 script (.py).
An example of script can be found here example.py. It uses o11.py. When a script is configured, only it’s name body must be specify. o11 will first try to start the .sh extension and then .py one if not available. Scripts must be stored in the scripts directory.
Let say we have a provider called Provider 1 which script name is provider1.py, stored in scripts/provider1.py. This script must then be referenced as provider1 in the Script field. Some script extra parameters can be specified.
Depending on the type of script, it will automatically receive the following parameters, additionally to the ones configured by user.
- Common to all scripts: action=[action type] bind=[bind] proxy=[proxy] doh=[doh] worker-[worker]
- Action type can be one of: login, pair, manifest, cdm, events, channels or heartbeat
- Manifest script: action=manifest
- Cdm script: action=cdm drm=[widevine or playready] challenge=[drm challenge] pssh=[pssh used to extract needed keys]
- Events: action=events
- Channels: action=channels
- Heartbeat: action=heartbeat heartbeaturl=[heartbeat url returned by manifest script] heartbeatparams=[heartbeat parms returned by manifest script]

Download:
o11 pro Nulled