Publisher Extension

Here are some Publisher Extension features that can help you operate your service using various Publishers of OvenMediaEngine.

#01. Features in all Publishers

Add Delay to the Stream

The Stream Delay feature allows you to force additional latency on all <Publishers>. This can help you handle unexpected situations when operating a live service.

Set the <Publishers><DelayBufferTimeMs> value in Server.xml as follows:

<?xml version="1.0" encoding="UTF-8"?>
<Server version="8">
  ...
  <VirtualHosts>
    <VirtualHost>
      <Applications>
        <Application>
          <Publishers>
            ...
            <!-- milliseconds -->
            <DelayBufferTimeMs>10000</DelayBufferTimeMs>
            ...
          </Publishers>
        </Application>
      </Applications>
    </VirtualHost>
  </VirtualHosts>
</Server>

#02. Features in (LL)-HLS and WebRTC

Default Playlist Creation Settings

If you wish to control the creation of the default Playlist (llhls, playlist, webrtc) for each playback protocol (LL-HLS, Legacy HLS, WebRTC). You can use the <CreateDefaultPlaylist> option to manage the system more easily.

Configure in Server.xml under <Publishers><LLHLS><CreateDefaultPlaylist> (or <Publishers><HLS><CreateDefaultPlaylist>, or <Publishers><WebRTC><CreateDefaultPlaylist>) as follows:

<?xml version="1.0" encoding="UTF-8"?>
<Server version="8">
  ...
  <VirtualHosts>
    <VirtualHost>
      <Applications>
        <Application>
          <Publishers>
            ...
            <LLHLS>
              <CreateDefaultPlaylist>true</CreateDefaultPlaylist>
            </LLHLS>
          </Publishers>
        </Application>
      </Applications>
    </VirtualHost>
  </VirtualHosts>
</Server>

#03. Features in (LL)-HLS

Origin Redundancy Settings

When configuring redundancy for OvenMediaEngine's Low-Latency HLS Origin Servers (or HLS Origin Servers), you can make the Segment file names on the Primary and Secondary Origin Servers the same through the Origin redundancy setting. This ensures that the Edge Server or CDN Cache Server connects to the Secondary Origin Server instead of the Primary Origin Server and downloads the same content seamlessly if the Primary Origin Server fails.

Enable <Publishers><LLHLS><ServerTimeBasedSegmentNumbering> (or <Publishers><HLS><ServerTimeBasedSegmentNumbering>) in Server.xml as follows:

<?xml version="1.0" encoding="UTF-8"?>
<Server version="8">
  ...
  <VirtualHosts>
    <VirtualHost>
      <Applications>
        <Application>
          <Publishers>
            ...
            <LLHLS>
              <ServerTimeBasedSegmentNumbering>true</ServerTimeBasedSegmentNumbering>
            </LLHLS>
          </Publishers>
        </Application>
      </Applications>
    </VirtualHost>
  </VirtualHosts>
</Server>

This feature generates segment file names based on server time, so you must synchronize the time on your primary and secondary origin servers.

Default Query String Settings

You can control the fundamental operations of Low-Latency HLS (or Legacy HLS) via the <DefaultQueryString>.

Set in <Publishers><LLHLS><DefaultQueryString> (or <Publishers><HLS><DefaultQueryString>) in Server.xml as follows:

<?xml version="1.0" encoding="UTF-8"?>
<Server version="8">
  ...
  <VirtualHosts>
    <VirtualHost>
      <Applications>
        <Application>
          <Publishers>
            ...
            <LLHLS>
              <DefaultQueryString>
		        <Query>
				  <Key>_HLS_legacy</Key>
				  <Value>NO</Value>
		        </Query>
		        <Query>
				  <Key>_HLS_rewind</Key>
				  <Value>YES</Value>
			    </Query>
			  </DefaultQueryString>
            </LLHLS>
          </Publishers>
        </Application>
      </Applications>
    </VirtualHost>
  </VirtualHosts>
</Server>

This setting is ignored if the playback URL already has a query string appended to it.

Using Propagatet Query String

When you enable <PropagateQueryString>, the query string included in the initial Master Playlist request is automatically carried over to all sub-requests (Media Playlist, Segment, and Partial Segment). By including session keys, authentication tokens, etc., in the query string and utilizing this feature, content access control becomes easier as all requests can be verified at the CDN level.

Set the <Publishers><LLHLS><PropagateQueryString> (or <Publishers><HLS><PropagateQueryString>) in Server.xml like this:

<?xml version="1.0" encoding="UTF-8"?>
<Server version="8">
  ...
  <VirtualHosts>
    <VirtualHost>
      <Applications>
        <Application>
          <Publishers>
            ...
            <LLHLS>
              <OriginMode>true</OriginMode>
              <PropagateQueryString>true</PropagateQueryString>
            </LLHLS>
          </Publishers>
        </Application>
      </Applications>
    </VirtualHost>
  </VirtualHosts>
</Server>

You should take care not to include sensitive information in the Query String directly.

#04. Features exclusive to LL-HLS

Control Origin Cache

You can specify how long content should be cached on edge servers or CDN cache servers by adding a Cache-Control header to the HTTP response.

Set the <Publishers><LLHLS><CacheControl> in Server.xml like this:

<?xml version="1.0" encoding="UTF-8"?>
<Server version="8">
  ...
  <VirtualHosts>
    <VirtualHost>
      <Applications>
        <Application>
          <Publishers>
            ...
            <LLHLS>
              <OriginMode>true</OriginMode>
              <CacheControl>
                <MasterPlaylistMaxAge>0</MasterPlaylistMaxAge>
                <ChunklistMaxAge>0</ChunklistMaxAge>
                <ChunklistWithDirectivesMaxAge>60</ChunklistWithDirectivesMaxAge>
                <SegmentMaxAge>-1</SegmentMaxAge>
                <PartialSegmentMaxAge>-1</PartialSegmentMaxAge>
              </CacheControl>
            </LLHLS>
          </Publishers>
        </Application>
      </Applications>
    </VirtualHost>
  </VirtualHosts>
</Server>

<CacheControl> Elements

<CacheControl> can be used with 0 and positive values, while using -1 may result in unexpected caching behaviors, so caution is advised.

Last updated