Wowza Streaming Engine 4.1.1 Release Notes

Important: A newer version of Wowza Streaming Engine is available. For more information, see Latest software updates for Wowza Streaming Engine.

Version: Wowza Streaming Engine™ 4.1.1 build 13180 released on December 2, 2014.


Note: For step-by-step instructions about how to update your Wowza Streaming Engine media server software, see How to update your Wowza Streaming Engine installation.


New Features and Functionality in Wowza Streaming Engine 4.1.1

Detailed list of changes in Wowza Streaming Engine 4.1.1

New Features and Functionality in Wowza Streaming Engine 4.1.1

Wowza Streaming Engine™, formerly Wowza Media Server™, is robust, customizable, and scalable server software that powers reliable streaming of high-quality video and audio to any device, anywhere.

Log File Viewer

A new Logs page in Wowza Streaming Engine Manager lets you view the messages in Wowza Streaming Engine log files ([install-dir]/logs) and Wowza Streaming Engine Manager log files ([install-dir]/manager/logs). You can use filtering and display options to customize what's displayed. This feature also provides a way for you to download large log files on the media server to a compressed (zipped) folder for viewing outside of the manager. To access the new Logs page in Wowza Streaming Engine Manager, click the Server tab, and then click Logs in the contents pane.

Works With Wowza Integration for Epiphan Pearl and Telestream Wirecast 6 Encoders

Wowza Streaming Engine features integrated publishing options that simplify live streaming workflows. The Incoming Publishers page for live applications in Wowza Streaming Engine Manager enables you to deliver connection settings for the application to a variety of popular encoders and cameras. Publishers that aren't integrated with Wowza Streaming Engine can still connect to live applications in Streaming Engine, but you must configure their connection settings manually.

Wowza Streaming Engine 4.1.1 adds the Epiphan Pearl and Telestream Wirecast 6 encoders to its growing lineup of integrated publishers. 

Detailed list of changes in Wowza Streaming Engine 4.1.1

  • Updated to version 2.2.2
  • Updated to version 5.1.6
  • Added new log viewer feature
  • Added support allowing users to add HTTP headers to the REST API response messages to allow detailed control of CORS headers as well as inclusion of custom headers
  • Push Publishing updates for pushing Apple HLS to Akamai:
    • HTTP socket connection failures or read/write failures force a retry on a different IP address when multiple addresses are returned from the DNS lookup
    • Streams pushed redundantly to primary and backup endpoints are pushed as separate streams with different streamIds in the ingest path (primary: "/<streamId>/", backup :"/<streamId>-b/") and are listed as such in the adaptive group playlist provided
    • Fixed "adaptiveGroups" map file parameter definition such that multiple groups are pipe-delimited (for example, "group1|group2") instead of comma-delimited
    • For HLS, when the cupertino.renditions map file parameter is provided as "audiovideo|audioonly", then both stream rendition URLs are listed in any associated adaptive group playlist, instead of just the audiovideo rendition URL
    • Adaptive group playlists for redundant streams are now pushed to both the primary and the backup endpoints
    • Enhanced logging for playlist generation with the pushPublishHTTPPlayListDebug property
  • Added API calls to IClient to enable removal of the clientid item from the onConnect result for RTMP connections (default is to send clientid):
    • boolean IClient.isAcceptConnectionSendClientId()
    • void IClient.setAcceptConnectionSendClientId(boolean acceptConnectionSendClientId)
  • Removed clientid item from onConnect result for RTMP connections when negotiating an authenticated RTMP connection
  • Fixed bug in Wowza Streaming Engine Manager not allowing an Encode to be enabled if it had a plus sign in it
  • Fixed bug in ModuleCoreSecurity where URLs with stream names containing the mp4: or flv: prefixes generate an incorrect hash that caused the session to be rejected
  • Updated BuyDRM module so that you can specify an "adaptiveGroup" field in the BuyDRM map file. This identifies all matching streams as being in the same adaptive set, which forces the same encryption key to be used for all of those streams
  • Fixed live and VOD DASH ABR CENC manifests so that the ContentProtection elements are only included once per AdaptionSet instead repeatedly for every representation
  • Added transcoder integer Transcoder/Properties property resetDecoderOnTransitionToVideoBehindState, which when set will instruct video decoder to reset if transcoder behindness reaches given state or greater (default is -1, which turns off reset system). Valid behindness values are:
  • Added MPEG-TS boolean property "mpegtsHasM2TSTimeCodes" which instructs the de-packetizer to account for the 4-byte M2TS timecodes prepended to the standard MPEG-TS packet by some high definition video cameras
  • Fixed problem with logging accuracy when using Server/Properties property sslLogProtocolInfo (SSLInfo.CipherSuitesEnabled and SSLInfo.ProtocolsEnabled now correctly log what is active)
  • Modified javascript function hashChanged() to account for behavioral change in Firefox where it now always decodes the URL in location.hash. This caused the incomingstreams_details page to not load when viewing a stream on the edge application
  • Fixed incorrect encryption of HLS chunks when the playlist index was not the same as the DVR chunk index. This could occur in an ABR situation where one of the streams was missing chunks
  • Fixed a closed captioning case where the file specified in the SMIL file would not be used; instead, the caption file with the same base as the VOD asset would be used
  • Added API to IHTTPStreamerSession to track if connection to content is secured using SSL:
    • boolean IHTTPStreamerSession.isSecure()
    • boolean IHTTPStreamerSession.setSecure(boolean isSecure)
  • Improved HTTP streamers to set secure attribute in IHTTPStreamerSession when streaming is protected using SSL
  • Changed RTSP header responses to use CSeq rather than Cseq (case change)
  • Added support for StreamNameGroup/Members/Member/MediaListRendition/Title in transcoder template
  • Added support for propagating MediaList title field to jwplayer.smil responses
  • Fixed MPEG-DASH issue where the <Location> tag in the manifest did not specify the protocol as "https" when the connection was protected using SSL
  • Fixed Push Publishing HLS Akamai backup stream handling: In redundant HLS playlists, the Akamai edge server domain for the backup server in the chunklist URLs are now prepended with "b-", per latest info from Akamai QA
  • Fixed bug in Streaming Engine Manager that caused a 404 error and stack trace when restarting an application from the Stream Files details page or SMIL Files details page
  • Fixed bug on Incoming Security page that failed to allow access to Client Restrictions and Duplicate Stream Names options when application type was LiveHTTPOrigin
  • Fixed problem with packetization of Apple HLS (cupertino) header and footer ID3 tags for live streams (ID3 tags were not being TS wrapped)
  • Added Apple HLS (cupertino) live and VOD peak bitrate calculations
  • Improved Apple HLS (cupertino) live and VOD bitrate calculations to be more accurate
  • Added boolean HTTPStreamers/Properties property cupertinoEnableExtXVersionInMasterPlaylist to control if EXT-X-VERSION header is shown in master playlist for Apple HLS (cupertino) streams (default is true)
  • Added boolean HTTPStreamers/Properties property cupertinoEnableExtXAllowCache to control if X-ALLOW-CACHE header is shown in chunk playlist for Apple HLS (cupertino) streams (default is true)
  • Added boolean HTTPStreamers/Properties property cupertinoEnableAverageBandwidth to control if AVERAGE-BANDWIDTH header is shown in the master playlist for Apple HLS (cupertino) streams (default is false)
  • Added boolean HTTPStreamers/Properties property cupertinoEnableExtXIndependentSegments to control if X-EXT_INDEPENDENT-STREAMS header is shown in chunk playlist for Apple HLS (cupertino) streams (default is false)
  • Added support for specifying peak video bitrate in MediaList API:
    • public int MediaListRendition.getBitrateVideoPeak()
    • public void MediaListRendition.setBitrateVideoPeak(int bitrateVideoPeak)
    • public int MediaListRendition.getBitrateTotalPeak()
  • Added support for specifying peak video bitrate in a SMIL file:
    • video attribute video-bitrate-peak or videoBitratePeak
    • <param name="videoBitratePeak" value="1000000" valuetype="data"
  • Added support in transcoder for populating NGRP peak video bitrate
  • Added new PushPublishRTMP APIs to allow synchronization of ABR RTMP output streams to a common packet timecode:
    • void setSyncTimecode(long syncTimecode)
    • void setSyncPacketType(int syncPacketType)
  • Added Epiphan Pearl and Telestream Wirecast 6 encoders to the Incoming Publishers page in Streaming Engine Manager
  • Fixed bug in Firefox that prevented the download of XML files in the Incoming Publishers page in Streaming Engine Manager
  • Improved the handling and detection of M2TS timecodes in MPEG-TS streams as well as the detection of MPEG-TS over RTP when M2TS timecodes are present
  • Added transcoder decoder parameters (settable in transcoder template Decode/Video/Parameters):
    • mainconcept.loop_filter: Set loop filter mode option: 0=off, 1=on
    • mainconcept.output_8bit: Allow only 8-bit output image option: 0=off, 1=on
    • mainconcept.mv_precision: Limits precision of motion vectors option: 0:PRECISION_QUARTER, 1:H264VD_MV_PRECISION_HALF, 2:H264VD_MV_PRECISION_FULL
    • mainconcept.dpb_size: Set DPB size option
    • Set Error concealment modes (bitmask): 0:NONE, 1:SHOW_BASE_LAYER (SVC only), 2:CONCEAL_ERROR_FRAMES, 4:TEMPORAL_FOR_INTRA, 8:ERRORLESS_REF_ONLY
  • Improved handling of onMetaData events for incoming MPEG-TS and RTP streaming (added @setDataFrame to events)
  • Improved handling of onMetaData events in transcoder to properly preserve @setDataFrame events
  • Added support for definition of the "securityPublishValidEncoders" string property in the VHost.xml Root/VHost/Properties section. If the "securityPublishValidEncoders" is not set in the VHost.xml file, it defaults to "Wirecast/|FME/|FMLE/|Wowza GoCoder*". Setting it overwrites the default value. If the "securityPublishValidEncoders" is defined in the Application.xml file, this supersedes the value defined in VHost.xml and the default definition
  • Enhanced the Startup Streams Monitor Module to also watch the file's modified time, defaulted to off unless the property "startupStreamsMonitorFileModification" is set to true. This will cause streams affected by the modified file to be stopped and started to allow them to pick up any changes
  • Changed MPEG-DASH so that the MPD.Location tag is excluded from DASH manifests when in HTTP Origin mode
  • Created HTTPByteWriter class that is now used by Push Publishing to push HLS to Akamai. HTTPByteWriter uses non-blocked socket channels to better handle connectivity issues with endpoints
  • Added Push Publishing properties to allow modification of the HTTP connectionTimeout, readTimeout, and maxRetries parameters on the sockets created for the Push Publishing HTTP transactions: pushPublishHTTPConnectionTimeout, pushPublishHTTPReadTimeout, and pushPublishHTTPMaxRetries
  • Improved socket timeout detection for Push Publishing HTTP protocols
  • Fixed bug in ModuleSecureToken for RTMP where received hash was truncated when it was the only parameter
  • Removed extraneous invalid value warnings in ModuleCoreSecurity when token starttime and/or token endtime are not specified
  • Fixed the decoding of the additional identification data in the MPEG-TS Registration descriptor
  • Fixed smoothRespondImmediatelyOnReadAheadFragmentNotReady logic so that it returns immediately even if fragment has not been processed (origin/edge timing issue)
  • Fixed Push Publishing cupertino-akamai issue where "{secureToken}" HLS filename variable was appearing in all chunk URLs in all HLS chunklists pushed to Akamai
  • Set the IP address in the RTPSession when the first packet of an MPEG-TS stream is received
  • Updated MainConcept HEVC encoder and decoder library to version 3.1
  • Fixed transcoder rate control problem with HEVC encoding
  • Fixed regression where DVR would immediately go into a non-live state when encoder disconnected, instead of waiting for the DVR timeout to occur
  • Fixed bug in ModuleCoreSecurity that prevented FMLE from reconnecting successfully when the received hash contained a '+' character
  • Fixed bug in incoming security and outgoing security models that prevented the use of wildcards in IP addresses
  • Fixed problem where HLS ABR stream with single audio-only stream and WebVTT subtitles failed to play
  • Improved randomize stream name functionality for HTTP streaming to make sure random strings are generated from static randomizer. This ensures that unique IDs are generated
  • Fixed Akamai Push Publishing HTTP profiles (HLS) to ensure alignment of chunk indexes across all ABR stream renditions. Also, chunks are now pushed to a new/unique folder on the endpoint after a stream reset occurs
  • Added enforcement of Publish IP White List and Publish IP Black List for RTSP publish connections