.. _Usecases:
Use-cases
=========
Open captions driven by REST API calls
--------------------------------------
On Linux operating systems Wowza installation ships with OpenJDK that does not include fonts. On Linux
you need to manually install `fontmanager` and at least one font `openttf-dejavu` to make open captions work.
.. code-block:: bash
sudo apt-get install fontconfig
sudo apt-get install ttf-dejavu
To get the REST API up and running, you need to add the below HTTP provider to your ``VHost.xml`` file:
.. code-block:: xml
io.ztream.scribe.HttpProviderCaptionApi
captions*
none
You need to add ``ModuleLiveOpenCaptions`` module to your ``Application.xml``
.. code-block:: xml
...
ModuleLiveOpenCaptions
ModuleLiveOpenCaptions
io.ztream.scribe.ModuleLiveOpenCaptions
You have to enable transcoder in the application via the Engine Manager UI or directly in the xml:
.. code-block:: xml
transcoder
You also need to set the ``raskenlund.804.license`` application property:
.. code-block:: xml
raskenlund.804.license
W804-1038-xxxx-xxxx-xxxx
String
Assuming your application is called ``live`` and your incoming stream is called ``myStream``, you can
trigger a test caption using curl:
.. code-block:: bash
curl --location --request POST "http://localhost:1935/captions/v1/applications/live/streams/myStream/caption"
\ --header "Content-Type: application/json" --data-raw "{
\"captions\": [
{
\"textData\": \"Hello World, this is the captioning module\",
\"language\": \"en\"
}
],
\"delay\": 0
\}"
CEA608 captions driven by REST API calls
----------------------------------------
To get the REST API up and running, you need to add the below HTTP provider to your ``VHost.xml`` file:
.. code-block:: xml
io.ztream.scribe.HttpProviderCaptionApi
captions*
none
You need to add ``ModuleOnTextDataToCEA608`` module to your ``Application.xml``
.. code-block:: xml
ModuleOnTextDataToCEA608
ModuleOnTextDataToCEA608
io.ztream.scribe.ModuleOnTextDataToCEA608
You need to set the ``raskenlund.804.license`` application property:
.. code-block:: xml
raskenlund.804.license
W804-1038-xxxx-xxxx-xxxx
String
You need to configure the below timed text settings in the application:
.. code-block:: xml
captionLiveIngestType
onTextData
String
captionLiveIngestLanguages
eng,nld,nor,hun
String
WebVTT captions driven by REST API calls
----------------------------------------
Please follow the setup for the CEA608 captions, except that you should not add ``ModuleOnTextDataToCEA608``
to the application, but configure the below timed text property instead:
.. code-block:: xml
cupertinoLiveCaptionsUseWebVTT
true
Boolean
Speech To Text with AWS Transcribe
----------------------------------
You need to add ``ModuleLiveTranscribe`` module to your ``Application.xml``
.. code-block:: xml
ModuleLiveTranscribe
ModuleLiveTranscribe
io.ztream.scribe.ModuleLiveTranscribe
And you must enable transcoder in the application via the Engine Manager UI or directly in the xml. If you
do not need video transcoding, you can use the "audioonly" template so that video transcoding is disabled:
.. code-block:: xml
transcoder
audioonly.xml
Please make sure that at least one ``Encode`` in your active transcoder profiles have the
audio codec set to something other than ``PassThru``. If no audio is being transcoded, the plugin
is not able to capture audio frames and send them to AWS, which will time out the
transcoding session after 15 seconds without audio data.
WebVTT tracks in Adaptive Live Streaming HLS playlists
------------------------------------------------------
When adding WebVTT captions to a live stream, by default Wowza publishes the WebVTT track
in each rendition's own ``playlist.m3u8`` but the adaptive playlist that starts with ``ngrp:``
does not contain the text track.
To fix this problem the Scribe module contains a custom Module that can be configured in the
``Application.xml`` file and make it responsible for returning the patched playlists.
.. code-block:: xml
ModuleAMLSTWebVTT
ModuleAMLSTWebVTT
io.ztream.scribe.ModuleAMLSTWebVTT
With this module enabled, replace the ``ngrp`` prefix with ``amlst`` in the playlist URL, e.g.
``https://domain.tld/application/amlst:streamname_all/playlist.m3u8`` to ensure that each rendition has a reference
to the WebVTT caption track.
.. note::
This Module assumes that the ``StreamName`` parameter of the Stream Name Group in the transcoder template
uses the underscore character to identify the group, e.g. ``${SourceStreamName}_all`` or ``${SourceStreamName}_test``.
Stream Name Groups that do not follow this naming convention will be ignored when retrieving the subtitles list for
the group.
Here is an example ``StreamNameGroup`` section of a transcoder template
.. code-block:: xml
all
${SourceStreamName}_all
...