Read Introducing remote control in Larix Tuner article to learn more about the setup and usage.
November 5, 2024
Remote control for Larix Broadcaster in Larix Tuner
Read Introducing remote control in Larix Tuner article to learn more about the setup and usage.
September 27, 2024
AMD Alveo U30 support
July 31, 2024
Larix Tuner is alive!
Softvelum is excited to introduce Larix Tuner, a new web service designed to simplify the management of multiple Larix Broadcaster instances.
Learn more about Larix Tuner, its features, workflow, and pricing.
June 25, 2024
Convert DVB subtitles into WebVTT for HLS
June 24, 2024
The blog is moving
Starting this month, all our new articles are published at our new blog at Softvelum.com website.
Old articles will remain in this blog and we'll occasionally be updating them once we make changes to our products.
We encourage you to follow us in our social networks: Facebook, Twitter and LinkedIn, join our channel in Telegram and subscribe to our YouTube channel. All our updates from the website, the blog or other sources are announced there.
June 5, 2024
DVR in SLDP HTML5 Player
Read this recent article to learn more about the setup and usage:
Adding DVR into SLDP HTML5 Player
ABR for WHEP WebRTC
As always, it's highly optimized for delivery to multiple simultaneous viewers to make is cost efficient.
WebRTC adaptive bitrate WHEP in Nimble Streamer
Also read Inside of WebRTC adaptive bitrate streaming algorithm from Softvelum article to learn more about how our ABR works.
May 20, 2024
New case study: Nimble Streamer powers LiveX and VVCR cloud production
Explore our latest case study to see how Nimble Streamer and LiveX are shaping the future of live video production.
LiveX, a leading full-service production company, is revolutionizing live production using Nimble Streamer. LiveX creates and broadcasts live events for global brand leaders, leveraging the power of cloud-based tools like Virtual Video Control Room (VVCR).
Built around Nimble Streamer, VVCR enables fully remote production processes with unparalleled flexibility and scalability. From the NYC Times Square experience to coordinating over 1000 gamers in Call of Duty II events, Nimble Streamer is at the core of LiveX's remarkable projects.
Learn more about the benefits of Nimble Streamer and LiveX collaboration in cloud production.
May 16, 2024
WHEP Load Tester tool to test WebRTC performance
As part of WHEP ABR playback support in Nimble Streamer, we had to create some additional tools in order to test our own solution.
March 26, 2024
libaom-av1 and SVT-AV1 transcoding setup with Nimble Streamer
Now with Nimble Streamer support for AV1, streaming services can easily adopt this advanced format to deliver high-quality content. Adding another significant piece into AV1 support, here we describe the transcoding options available for Nimble Streamer Live Transcoder: SVT-AV1 and libaom-av1 encoders are now supported via the respective FFmpeg encoder option.
Prerequisites
1. Decoding AV1 received streams
AV1 streams are supported as video input, and no extra setup steps are required. Just drag Video Source to a timeline, and specify the name of a stream for decoding. After that any of the Transcoder’s filters can be used on the stream.
2. Encoding with libaom-av1
Specifying libaom-av1 for encoding is not much different from any other encoders. Add the Video output to a timeline, name the output application, and stream, and then select FFmpeg as the encoder. Next, type in libaom-av1 in a Codec field. Once you click OK and then Save the scenario, the settings will be applied and you will get the output stream in AV1 format.
2.1 libaom-av1 constant quality
2.2 libaom-av1 constrained quality
2.3 libaom-av1 keyframe control
3. Encoding with SVT-AV1
3.1 SVT-AV1 CRF
3.2 SVT-AV1 Presets
3.3 Additional options with SvtAv1Params
AV1 decoding and encoding with NVENC
Live video overlays and videowall with Nimble Live Transcoder
Prerequisites
Before using the Transcoder for Nimble Streamer, you must have a basic subscription to WMSPanel, as Transcoder does not work for trial servers. The Transcoder license costs 50 USD per server per month, there is no trial version for it.
Please find more details on installing and registering an instance of Transcoder on the following installation page.
Basics of operation
First, a base layer that determines the output resolution to create an overlaid video must be defined. This can be a live video or an image.
Then, all other input sources will be stacked on top of this main layer via the Overlay filter. You may also need the Scale filter to adjust the size of the other sources to place and fit them on the base layer.
The next concept is that you must define one of the sources as the Main stream. Once the scenario is started, the Transcoder will start equalizing all other streams’ timestamps to the Main stream to provide a stable source for Overlays.
Please also check an extended video tutorial about creating mosaic video wall using overlays at the end of this article.
Let's go through the details of this scenario setup below.
Sources for overlays: live streams
Put a Video source decoder block on a timeline, and the Add video source dialogue will appear.
This will allow choosing the source type: Stream, File, NDI. First, we describe the regular live stream setup.
Type in an application and choose the stream to auto-fill the stream’s name. If the streams are registered in the panel, they will appear for selection. Choose the required one.
To equalize any other stream's timestamps with the Main's timestamps, choose the PTS adjustment enabled checkbox in its source’s settings.
Since the Main and PTS Adjustment are defined, you can safely chain several Overlays (or any other filters) in a Transcoder’s scenario. This versatility will help create distinctive visual effects for your video output.
As for the Audio, the Main is the only stream that will have perfectly synced audio. We do not advise taking audio from other streams, as we cannot guarantee the audio sync in such a case.
If the source live stream is over or stopped, the decoder will hold the previously available frame in its output, making the next in a chain Overlay filter operational.
In case the Transcoder scenario is just starting and one of the live sources participating in the Overlay chain is missing, the Scenario will fail to start. We advise using hot-swap failover to ensure the source always has some viable frames to process.
Source for overlay: video file, static, or animated image files
Move on to the next type of decoder: File Source decoder. Although we already have an article about decoding from files, here we will notice the crucial points.
As the name implies, it uses files on the same server Nimble Streamer is running as input. As you specify the path to some file and the scenario is running, then the File Decoder generates looped output with stable timestamps which can be assigned as Main. This is true for both video or image files. As you might have spotted, there’s no PTS Adjustment checkbox. It is considered that if the Main stream is not specified, such sources will be forced as PTS adjusted.
The video file formats supported are MP4, MOV and MKV. The codecs are listed in our codecs reference. Videos with alpha channel are not supported at the moment. Feel free to ask our support team if you plan using them.
Supported image formats include PNG, APNG, JPEG, GIF, TIFF and BMP. The alpha channel or GIF transparency is available. GIF and APNG animations are supported too.
In case of a single frame image, the file will be re-loaded as fast as the file is modified or overwritten. Notice that reloading will not work for video files or files with a sequence of frames, like APNG animations.
All the above makes the File Decoder a handy source for animated or updated Overlays like moving logos or bar ads.
Notice that path considerations are different between Windows and Linux.
For more information on File decoder, please read Binding un-synced video and audio sources article.
Single Overlay filter setup
Now let's move on to some practical setup that will be a basis for cases like video wall or mosaic.
Multiple Overlay filter setup (videowall)
Hardware accelerated Overlay and other filters
Is the hardware acceleration available for this feature set? Absolutely, but just for Ubuntu Linux users. Both NVENC and QuickSync have hardware-accelerated versions of overlay filters. It's better to use NVENC-ffmpeg or NVENC-quicksinc decoders with these filters for performance reasons. This will avoid getting and putting frames to the system’s RAM and losing CPU cycles by using additional hwupload and hwdownload filters.
However, these decoders come with certain limitations. While they allow you to decode H.264 or HEVC (if supported by the GPU) mp4/mkv video files, they are not suitable for handling static images or animated files such as GIFs.
Remember to consider the hardware-accelerated scale_npp (scale_cuda) and vpp_qsv (scale_qsv) filters for resizing a video source. NVENC-ffmpeg decoder allows scaling in its settings by the resize option. Explore additional information about NVENC-only scenarios in the following article.
If you require more details on creating an NVENC-only scenario, please let us know. We have plans to publish an article specifically addressing this topic.
Troubleshooting
Here we’ll describe some tips and common errors you may face while while using Transcoder.
Although we did an extensive job of improving the stability of the Overlay filter, anyway we recommend using the out-of-process mode to provide better stability for the Nimble Streamer server. This mode will ensure that a single scenario with an issue won’t crash Nimble Streamer. Read about it in this article.
If you’re changing source type, let's say from File to Live, scenario restart is considered. It can be performed while editing the Scenario by the corresponding icons near its name.
Some common messages in the log:
- [video_decoder] E: failed to open stream /some/path/file.ext - You’ll get this error in the log if the specified file name is not found or Nimble has issues accessing it (e.g. due to permission restrictions).
- [video_filter] E: failed to parse filter graph - This means something is wrong with a filter chain from the parameter or there are filter name incompatibility errors between the decoder and filter. Other messages are needed for details.
- E: encoder too slow’ for encoder or decoder in most cases it means you are running out of processing power. If the multicore CPU is used, and you observe that some cores are not loaded when the error is present, this may be improved by allowing more cores for decoding or encoding.
- [video_filter] E: reset video filter on pts gap(prev=XXX, cur=YYY, timescale=1/1000), filter=XXXXX, stream=larix/2 - It's not an error, but the indication that due to the timestamp jumps, the filter was re-created.
- [video_decoder] E: decode interval gap detected, decode_interval=XXXX for [_some_path_] - it very likely is a decoding performance issue or the inconsistent system time.
Mosaic video wall tutorial
We've made an extended video tutorial about creating mosaic video wall using overlays in Live Transcoder
March 19, 2024
Ogg/FLAC support in Nimble Streamer
Nimble Streamer Icecast streaming feature set covers many use cases and supports multiple codecs.
Now Nimble also supports FLAC (Free Lossless Audio Codec) with Ogg container for Icecast.
You may use it in various combinations:
- Take Icecast input with Ogg/FLAC content and then deliver FLAC Icecast content further to any number of listeners without changing the codec. All features related to content protection and monetization can be applied to the output Icecast.
- Decode FLAC via Nimble Live Transcoder, encode it into AAC or MP3 and deliver further via any supported protocol, including Icecast, audio-only HLS, SLDP or any other. You may also transcode it into Opus for WebRTC delivery. Notice that you'll need to upgrade your Transcoder package to do that.
This allows using Ogg/FLAC in any of the workflows needed to deliver high quality audio to your listeners.
Let us know of your experience with audio features of Nimble Streamer.
SRT multipoint listener in Larix Broadcaster
Softvelum products have wide support for SRT streaming, processing and playback.
Larix Broadcaster has various capabilities for SRT streaming including all modes - Caller, Listener and Rendezvous - and a number of SRT parameters.
SRT Listen mode now allows streaming as a multipoint listener on both Android and iOS.
It means that your consumers who want to get live content from same mobile can pull the stream simultaneously without waiting for connection to be available. This opens a use case when you set up your streaming mobile device and have various participants of the same production team to get same content with no need to re-set the connection settings.
If you choose to provide an SRT stream in Listen mode, Larix will also provide Max listener connections parameter to set control on how many consumers can access the stream simultaneously.
Try it now with Larix Broadcaster:
March 7, 2024
Axinom DRM in Nimble Streamer
Axinom DRM has recently been added to Nimble Streamer DRM bundle.
It allows protecting live and on-demand content with Widevine, Fairplay and PlayReady DRM encryptions.
Its setup is as easy as any other DRM, here's an example:
drm {
application = live_drm
type = axinom
axinom_tenant_id = 0e51eeee-7921-5678-zzzz-xxxxxxxxxxx
axinom_management_key = faa6dddd-1234-nnnn-yyyyyyyyyy
content_id = 1232345-8602-11ea-b04b-7fccdabcdef1
content_ids {
stream1 = 1232345-8602-11ea-b04b-7fccdabcdef2
stream2 = 1232345-8602-11ea-b04b-7fccdabcdef3
}
}
You'll need to obtain Tentant ID and Managemetn key from Axinom.
Also notice that you need to specify the content IDs because it's being used for content licensing.
Let us know of your experience with Nimble Streamer DRM.
February 24, 2024
SLDP is now played on iOS17 iPhones with MMS
Our team introduced SLDP low latency playback protocol several years ago as a replacement for RTMP due to sunset of Flash. It's a WebSocket-based technology which can be played on any browser platform that has MSE. Up until now, this was the reason why SLDP live streams couldn't be played on iPhones since they didn't have MSE, even though, it played on Windows, Linux, macOS and even iPads. The only exception was Opus audio-only playback on iOS.
Now with the latest releases of iOS 17, iPhone iOS has full support for MMS - Managed Media Source - which provides necessary capabilities to make the MSE-based playback possible.
Hence, SLDP playback is now available on iPhones running iOS17+.
The setup is the same as for other browsers.
- Go to SLDP HTML5 Player page, download and embed HTML5 player into your web page.
- Follow Nimble Streamer setup instructions for SLDP output setup if you haven't does this yet.
That's it.
You may also try our players testing page as well as raw HTML5 reference implementation to test your streams on iPhones.
Also notice that HLS DVR streams can be added to SLDP HTML5 Player for rewinding low latency streams. Read this article for details.
You can also subscribe for SLDP HTML5 SDK to make more customized setup for your use case and viewers' experience.
About SLDP
Softvelum Low Delay Protocol a.k.a. SLDP was created with last mile low latency in mind.
- Close to one second delay with buffer offset support for decreasing zap time (start latency).
- Codec-agnostic and may carry whatever your end-user platform has: H.264, AV1, VP8, VP9, H.265/HEVC video with AAC, MP3, MP2, AC3, E-AC3, Speex, PCM G.711, Opus audio.
- ABR real-time support. Switching channels takes just a GOP time and each channel may use its own codec.
- Simultaneous synchronized playback among multiple browsers and mobile devices.
- CEA-608/708 closed captions are supported with HTML5 Player SDK.
February 12, 2024
SCTE-35 markers support in Nimble Streamer Playout
The latest update introduces a new section in playlists called "Scte35Markers". It allows the insertion of SCTE-35 markers at a specific time spot within a playout-generated stream. Using key parameters like "Type", "Start", and "Duration" users can precisely control marker placement.
"In" and "Out" markers types are supported.
“Out” markers support either a precise time in UTC format ("YYYY-MM-DD HH:MM:SS") or the offset from the beginning of the currently running file set in milliseconds.
Here's a self-explanatory example:
{
"Type": "vod",
"Start": 0,
"Duration": 600000,
"MaxIterations": 0,
"Source": "test/content/mp4/sample.mp4",
"Scte35Markers": [
{ "Start": "2023-11-03 04:00:00", "Type": "Out", "Duration": 2000 },
{ "Start": "2023-11-03 04:00:02", "Type": "In" }
]
}
You can find full example on Nimble Streamer Playout page.
The improved Playout in Nimble Streamer allows effortlessly inserting SCTE-35 markers directly through the playlist, eliminating the need for additional Nimble API calls.
Install the latest Nimble Streamer version and check these enhancements.
We look forward to enhancing your streaming experience. Let us know if you have any questions.
Related documentation
February 6, 2024
Larix Broadcaster on MacOS
We're glad to inform you that Larix Broadcaster for iOS is now available on the latest macOS via the AppStore!
Larix Broadcaster for macOS provides:
- Support for MacBook's internal cameras
- Support for Continuity Camera feature to use iPhone as an external camera
- Support for USB cameras
- All the basic and advanced features of a Mobile App: Multicamera(Picture-In-Picture, Side-by-Side modes), Overlays, RTMP, SRT, WebRTC and all other protocols
- The same Apple ID can be used for several devices.
Now you may also stream with a wired connection to a preferred publish point.
Please check this video to see how it's set up:
January 17, 2024
Zixi streaming setup in Nimble Streamer
1. Prerequisites
A dedicated server is required to concurrently operate Nimble Streamer and Zixi Broadcaster on the same hardware.
Both Windows and Linux platforms are supported. The setup is tested with Zixi Broadcaster v16 and the latest version of Nimble Streamer.
Both Zixi Broadcaster and Nimble Streamer need active licenses or subscriptions.
The installation process for Zixi Broadcaster is not covered in this article. Please refer to Zixi documentation or reach out to Zixi support about this.
As for Nimble, you can find all related technologies’ documentation on this page and beyond. If you have any questions or issues installing a Nimble instance, please contact our support team.
Notice that the Zixi Broadcaster will be used by Nimble exclusively, and any additional manual settings of Zixi Broadcaster will be deleted.
2. Setting up Nimble Streamer config
The location of the Nimble’s config for the Linux version:
/etc/nimble/nimble.confThe location of the Nimble’s config for the Windows version:
C:\Program Files\Nimble Streamer\conf\nimble.conf
Add the following lines to the end of the config file and substitute *actual_zixi_broadcaster_password* with a real one (without asterisks).
### Zixi ###
zixi_port = 4444
zixi_username = admin
zixi_password = *actual_zixi_broadcaster_password*
Next, restart Nimble to apply the above changes e.g. via the command line for Linux or services snap-in for Windows.
If you succeed you will notice Zixi interfaces detected on the Server Info page in WMSPanel:
3. Receiving Zixi stream via Nimble
Navigate to 'Live Streams Settings' and go to the MPEGTS IN tab. Find and click the 'Add Zixi Stream' button. A dialogue will appear for specifying parameters to receive a Zixi stream. The Receive mode options include 'Listen' for pushing a stream to this server (e.g. by Larix Broadcaster for iOS) and 'Pull' for retrieving a stream from another location, such as another Zixi server or source.
3.1 Setup Listening for Zixi Stream
zixi://*:2088’ is displayed. If there’s no such line then it’s a sign that Nimble can’t reach the Broadcaster.
For unified management of any incoming MPEGTS streams, Alias, Description and Tags could be specified for additional identification. These handy labels help quickly find and group streams through WMSPanel. They are available for many other settings and we advise using them.
A Zixi stream must have a unique StreamID to be accepted. The StreamID is a string that identifies the stream. It is set in the respective field and must be the same as on the sender.
Next, the fields for Custom parameters and Values where optional parameters for the Zixi stream can be filled out.
These are used to specify additional options like latency, stream password, encryption type, etc.
We suggest referring to Zixi documentation for details, however, here's a description of options shown on a screenshot:
- password - Set stream password (blank by default)
- latency - Set latency in milliseconds: overrides remote latency configuration (this one is optional, by default the latency is defined on the sending device)
Click Save to initiate synchronization of the settings between Nimble Streamer, Zixi Broadcaster and WMSPanel.
Any manually created settings of Zixi Broadcaster will be erased and substituted by the parameters received from WMSPanel. The record for the Listening for Zixi stream settings will appear in the MPEGTS IN section. As the syncs are complete a green checkmark will confirm Nimble received and is ready to use this setting:
4.2 Setup Pulling of a Zixi Stream
In order to confirm that the stream is received, navigate to the ‘Live Streams’ page. There’s a handy way to do it: click on a server name in a breadcrumb located between ‘Live streams /’ and ‘/ Live stream settings ‘ to switch to the Live Streams page instantly.
The ‘Source’ value is a StreamID of a Zixi stream defined on a remote machine.
The ‘StreamID’ field refers to the unique name which Nimble will use after receiving the Zixi stream locally.
All other configuration options are the same as for Listen mode as explained above.
Please refer to the previous section for respective details.
If MPEGTS OUT was defined, please navigate to Live Streams to check the received stream settings or watch it via video player.
4. Publish a Zixi stream from Nimble to another Zixi Broadcaster instance
4.1 Push mode Zixi streaming
Use any other Zixi options as required.
Click ‘OK’ and switch to WMSPanel to set Nimble for sending Zixi stream.
Navigate to the ‘Live Streams Settings’-> ‘UDP Streaming’ tab and click ‘Add Zixi settings’.
Any additional Zixi parameters can be passed via the ‘Custom parameter’/’Custom value’ fields.
Specify a stream to send, by typing its application and name in the ‘Source application name’ and ‘Source stream name’ under the ‘Set source streams’ bullet. It’s allowed to specify several apps/streams here to form a multiple-program TS stream.
The ‘Raw MPEGTS source’ is also available to pass through some received sources intact, as described in the respective documentation page.
4.2 Listen mode Zixi streaming
On a Zixi Broadcaster side, click ‘+New Input’ in the ‘INPUTS’ section, and select the ‘Pull’ radio button:
Click ‘Save’ to start pushing a Zixi stream from Nimble and find it on a remote Zixi Broadcaster server:
The StreamID here will be the RemoteID for Nimble. Use some unique name.
‘Host’ is a Nimble Streamer box, and ‘Port’ is the port used for output in Zixi’s integration. 2088 is the default.
‘Stream’ is the StreamID we will define on Nimble side a bit later. It’s used to link Nimble’s streams with the Zixi protocol under this ID. This is a stream that will be taken from Nimble by Zixi Broadcaster.
Use any other parameters here, but don’t forget to ‘mirror’ them on the Nimble side if it is required by the protocol. For instance, if you define encryption type and string on a source, don’t miss to set the decryption params on the receiver.
Click ‘OK’, and move on to WMSPanel to configure Nimble.
As before, navigate to the ‘Live Streams Settings’-> ‘UDP Streaming’ tab and click ‘Add Zixi settings’, but now choose ‘Listen’ mode.
The crucial difference with the Push mode is that you must specify a StreamID of Zixi’s remote Pull settings, which is named ‘Remote ID’ here.
Specify the ‘Source application name’ and ‘Source stream name’ of streams which are available on Nimble, and assumed for transfer.
Fill a local ‘StreamID’ that will unite the streams that are specified in the Source Application/Stream name fields to transfer to Zixi Broadcasters. Keep in mind, that on a Zixi Broadcaster’s side, this name must be specified in a ‘Stream’ field of a Pull settings.
All other options are similar to Push mode and already described in the Zixi Push section above, please refer to them.
Click ‘Save’, and WMSPanel will confirm the settings are accepted by a green checkmark:
If you have any questions or issues regarding this functionality, our support team is ready to help, ensuring a successful Zixi streaming with Nimble.
Related documentation
Widevine DRM support for HLS
Nimble Streamer has extensive DRM support for live and VOD streams. It covers all DRM systems - Widevine, Playready and FairPlay - and multiple DRM management platforms.
Traditionally, HLS streams could only be protected using Apple FairPlay and could only be played on Apple devices.
With recent updates, HLS can now be protected using Google Widevine in addition to FairPlay.
This means that you may have just a single multi-key multi-DRM HLS stream and play it on the devices that support either FairPlay or Widevine. This practically means that this single multi-key HLS stream is protected on any modern streaming device like PC, Mac, Android, iPhone/iPad and more.
This also applies to Low Latency HLS DRM protection, no special setup is needed for that.
You don't need to have a separate MPEG-DASH stream specifically for Widevine protection now.
Widevine HLS encryption setup
The DRM setup is specific to your DRM provider and described on Nimble Streamer DRM setup page.
In addition, you need to add this parameter to your app setting section in drm.conf file:
widevine_hls_enabled = true
Like this:
drm {
application = live_ezdrm
type = ezdrm
widevine_hls_enabled = true
user = user@yourcompany.com
password = 12yourpassword34&*@#
}
We have EZDRM here enabled for all streams within "live_ezdrm" application. This can be any other DRM management solution.
Once you save the config file and re-start Nimble, the stream will be protected right away. You may also apply drm.conf changes by using native API call without Nimble re-start.Notice: Google Widevine Cloud License Service could not be used for encrypting HLS due to technical discrepancies.
Widevine multi-key HLS playlist example
We have a sample DRM-protected HLS stream
https://drm-test-cf.softvelum.com/live_ezdrm/bunny/playlist.m3u8
Here's an example of an HLS playlist that has both encryptions.
#EXTM3U#EXT-X-VERSION:7#EXT-X-INDEPENDENT-SEGMENTS#EXT-X-TARGETDURATION:9#EXT-X-MEDIA-SEQUENCE:703#EXT-X-KEY:METHOD=SAMPLE-AES,URI="skd://fps.ezdrm.com/;5a0XXXX4-8XX2-11ea-9XX8-040XXXXXXXXX",KEYFORMAT="com.apple.streamingkeydelivery",KEYFORMATVERSIONS="1"#EXT-X-KEY:METHOD=SAMPLE-AES,KEYID=5a0XXXX4-8XX2-11ea-9XX8-040XXXXXXXXX,URI="data:text/plain;base64,AAAAP3Bz XXXXXXXXX nWSs6jyXXXXXXXXXXXXXXXXXXXXXXXXSkAEaBWV6ZHJtSOPclZsG",KEYFORMAT="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed",KEYFORMATVERSIONS="1",IV=0x5a08XXX485XX11XXXXX401999XXXX#EXT-X-MAP:URI="video_1.fmp4?nimblesessionid=189205"#EXTINF:6.666,v_42_380062500_703.fmp4?nimblesessionid=189205#EXTINF:2.375,v_42_380662500_704.fmp4?nimblesessionid=189205#EXTINF:4.583,v_42_380876250_705.fmp4?nimblesessionid=189205#EXTINF:8.75,v_42_381288750_706.fmp4?nimblesessionid=189205
This element is for FairPlay:
#EXT-X-KEY:METHOD=SAMPLE-AES,URI="skd://fps.ezdrm.com/;5a0XXXX4-8XX2-11ea-9758-040XXXXXXXXX",KEYFORMAT="com.apple.streamingkeydelivery",KEYFORMATVERSIONS="1"
And this one is for Widevine:
#EXT-X-KEY:METHOD=SAMPLE-AES,KEYID=0x5a0XXXX4-8XX2-11ea-9XX8-040XXXXXXXXX,URI="data:text/plain;base64,AAAAP3Bz XXXXXXXXX nWSs6jyCfc1R0h7QAAAB8XXXXXXXSFIhHql1gEAZmSkAXXXXXXXXJtSOPclZsG",KEYFORMAT="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed",KEYFORMATVERSIONS="1",IV=0x5a08XXX485XX11XXXXX401999XXXX
Widevine HLS Players
You may use Shaka Player to play this stream, it fully supports this kind of Widevine-encrypted HLS. Other commercial players have that support, please refer to their documentation.
You may try playing our sample stream above using our players page. Here's an example of Widevine playback:
Related documentation
January 2, 2024
New WebVTT Features: Transcoder Passthrough and Playout Support
We are glad to announce that we added new features to our Nimble Streamer software media server to support WebVTT subtitles. WebVTT is one of the popular formats for displaying timed text tracks in VOD or live streams. Based on the feedback from our customers, we were working on adding WebVTT support for Live Streams.
First, you can produce a live stream with WebVTT subtitles from VOD files via Nimble Playout. However, there is a limitation that only one subtitle file can be used for one VOD file. Please find more details in respective section of the Playout documentation.
Another new feature is the Transcoder Passthrough option, which allows you to pass through WebVTT subtitles if they are detected in the source stream.
Please also check Subtitles digest page to see what else Nimble can do for you.
We are continuously working on enhancing subtitles support. Any suggestions and comments are welcomed.