WowzaPushPublishPlugIn
This repository is Wowza Plugin written in JAVA, inserts SCTE markers in adaptive HLS stream based on SCTE track found in input Mpeg-TS stream to Wowza Stream Engine.
Install / Use
/learn @amagimedia-open/WowzaPushPublishPlugInREADME
Wowza version supported : 4.7.0 and above
Features Supported
Current Features :
CUE Out (Duration) followed by CUE IN
- Reflects in HLS, chunks on Content-Advert and Advert-Content boundary in Wowza
CUE Out (NO Duration) followed by CUE IN
- Reflects in HLS ,chunks on CA and AC boundary in Wowza
CUE Out (Duration) NOT followed by CUE IN
- Plugin will add CUE IN in HLS by tracking duration
- Chunks on CA and AC boundary in Wowza
Supports EXT-X-PROGRAM-DATE-TIME
Supports HLS PULL only
Steps to follow:
-
Copy SCTEEnhanced.jar to /usr/local/WowzaStreamingEngine/lib
-
Create a Live Application with name as "scte_enhanced_app", only hls in playback type
-
Set properties in Custom properties RTP section for rtpDePacketizerMPEGTSMonitorCUEDebugLog and rtpDePacketizerMPEGTSListenerClass
<Properties> <Property> <Name>rtpDePacketizerMPEGTSMonitorCUEDebugLog</Name> <Value>true</Value> <Type>Boolean</Type> </Property> <Property> <Name>rtpDePacketizerMPEGTSListenerClass</Name> <Value>com.amagi.thunderstorm.wowza.RTPDePacketizerMPEGTSMonitorCUE</Value> </Property> </Properties> -
Set Live stream Packatizer properties as below
<LiveStreamPacketizer> <Properties> <Property> <Name>cupertinoMaxChunkCount</Name> <Value>50</Value> <Type>Integer</Type> </Property> <Property> <Name>cupertinoChunkDurationTarget</Name> <Value>5000</Value> <Type>Integer</Type> </Property> <Property> <Name>cupertinoPlaylistChunkCount</Name> <Value>8</Value> <Type>Integer</Type> </Property> <Property> <Name>cupertinoEnableDataEvents</Name> <Value>true</Value> <Type>Boolean</Type> </Property> <Property> <Name>cupertinoMPEGTSDataPID</Name> <Value>-1</Value> <Type>Integer</Type> </Property> <Property> <Name>cupertinoCalculateChunkIDBasedOnTimecode</Name> <Value>true</Value> <Type>Boolean</Type> </Property> </Properties> </LiveStreamPacketizer> -
Add modules below
<Module> <Name>SCTEEnhanced</Name> <Description>Detect SCTE nD chunk on Advert Boundary</Description> <Class>com.amagi.thunderstorm.wowza.SCTEEnhanced</Class> </Module> <Module> <Name>ModulePushPublish</Name> <Description>ModulePushPublish</Description> <Class>com.wowza.wms.pushpublish.module.ModulePushPublish</Class> </Module> -
Add a custom property for HTTP Streamer as below.
<HTTPStreamer> <Properties> <Property> <Name>cupertinoEnableProgramDateTime</Name> <Value>true</Value> <Type>Boolean</Type> </Property> </Properties> </HTTPStreamer> -
Add PUSH Publish map property as below
<Property> <Name>pushPublishMapPath</Name> <Value>${com.wowza.wms.context.VHostConfigHome}/conf/${com.wowza.wms.context.Application}/PushPublishMap.txt</Value> <Type>String</Type> </Property> -
Create PushPublisMap.txt in conf/scte_enhanced_app folder
- Use file with same name in settings folder as reference
- replace "file.root":"/home/amagi/local-file-cache" to reflect your location where you want to keep local cache of TS segments /usr/share/nginx/html
-
Inside /usr/local/WowzaStreamingEngine/conf folder create PushPublishProfilesCustom.xml Copy content from file with same name in settings as reference
-
Install nginx sudo apt-get update sudo apt-get install nginx
-
Copy files in nginx folder in settings to /etc/nginx folder
- Change port and root path as in step 8 above
Typical commands :
sudo systemctl restart WowzaStreamingEngineManager.service
sudo systemctl restart WowzaStreamingEngine.service
sudo service nginx restart
