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.3.0 build 16025 released on October 6, 2015.
Contents
New Features and Functionality in Wowza Streaming Engine 4.3.0
Detailed list of changes in Wowza Streaming Engine 4.3.0
New Features and Functionality in Wowza Streaming Engine 4.3.0
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.
Wowza Streaming Engine REST API 1.0
Wowza Streaming Engine 4.3.0 software enables full access to the Wowza Streaming Engine REST API with your Wowza Streaming Engine software license key. You can use the REST API to configure, manage, and monitor the media server through HTTP requests. Be sure to take a look at our cURL Examples that demonstrate how to to query the Wowza REST Service to manage the Wowza Streaming Engine software.
APIs for Live to VOD Clip Extraction
This release of the Wowza Streaming software has new APIs that enable you to extract clips--based on a start-time and duration that you specify--from both single-bitrate DVR streams and from DVR streams in an adaptive bitrate (ABR) streaming group in the Wowza nDVR store. For instructions on how to use the Java-based APIs, see the Wowza Streaming Engine Java API reference. For instructions on how to use the REST API endpoints, see our REST API cURL Examples.
Stream Target Option to Deliver Transcoded Output to Wowza Streaming Cloud
The Stream Targets feature in Wowza Streaming Engine 4.3.0 software has a new option that enables you to deliver transcoded live streaming output renditions from Wowza Streaming Engine to Wowza Streaming Cloud™ as a group for delivery to viewers. This option enables you to shift the transcoding workload from Wowza Streaming Cloud to Wowza Streaming Engine, for media server configurations that have high available bandwidth and sufficient CPU resources. For more information, see How to stream to Wowza Streaming Cloud.
Integrated RTMP Output from JVC Camcorders
Wowza Streaming Engine 4.3.0 software can stream RTMP output from supported JVC camcorders that have firmware updates that support the RTMP protocol. RTMP support enables additional JVC camcorders to connect to a Wowza Streaming Engine server automatically.
MPEG-DASH Example Player Updates
The MPEG-DASH example players in Wowza Streaming Engine 4.3.0 software and the Test Players in Wowza Streaming Engine Manager are now based on the open source Shaka Player project. Google Shaka Player is more compatible with the MPEG-DASH implementation in Wowza Streaming Engine software. The example players can be used for DASH streaming playback of single and adaptive bitrate live and on demand (VOD) MP4 streams. For more information, see How to play video with the example MPEG-DASH players (DASH).
To build and host your own Shaka Player to play live and VOD streams from Wowza Streaming Engine, see How to use Google Shaka Player with Wowza Streaming Engine (MPEG-DASH).
Media Cache Enhancements
Wowza Streaming Engine 4.3.0 software has new Java API methods that you can use to instruct your Wowza media server to purge on demand assets from the cache when using the Media Cache feature. You can purge an asset from the cache if it's not being referenced or played by clients. New in this media server software release is the ability to purge assets that are still in use. For more information, see How to purge an item from the cache (MediaCache).
HEVC/H.265 Video over Apple HLS (Preview)
Wowza Streaming Engine 4.3.0 software adds playback support for the High Efficiency Video Coding (HEVC), also called H.265, video format over Apple HLS as an early preview of software that may be updated in a later Wowza Streaming Engine software release. You can configure a template in Wowza Transcoder to transcode live video streams to HEVC/H.265 output renditions that are suitable for devices that can play HEVC-encoded video over Apple HLS. For more information, see How to stream using HEVC/H.265 transcoding.
Detailed list of changes in Wowza Streaming Engine 4.3.0
- Updated genkey.bat to work with updated environment variables created with Wowza Streaming Engine 4.2 installers
- Fixed override of HLS WebVTT caption language name using cupertinoTag.NAME in a SMIL file
- Fixed problem with DVR recorder locking conflict during shutdown and startup
- Updated the REST API, Swagger documentation, and Wowza Streaming Engine Manager to reflect the need to use query parameters formatted as ?dstEntryName=<newobjectname> instead of ?<newobjname> when using the copy actions. The affected endpoints are:
- http://<ip:port>/v2/servers/{serverName}/vhosts/{vhostName}/applications/{appName}/actions/copy
- http://<ip:port>/v2/servers/{serverName}/vhosts/{vhostName}/applications/{appName}/smilfiles/{smilfileName}/actions/copy
- http://<ip:port>/v2/servers/{serverName}/vhosts/{vhostName}/applications/{appName}/streamfiles/{streamfileName}/actions/copy
- http://<ip:port>/v2/servers/{serverName}/vhosts/{vhostName}/applications/{appName}/transcoder/templates/{templateName}/actions/copy
- http://<ip:port>/v2/servers/{serverName}/vhosts/{vhostName}/streamfiles/{streamfileName}/actions/copy
- http://<ip:port>/v2/servers/{serverName}/vhosts/{vhostName}/transcoder/templates/{templateName}/actions/copy
- http://<ip:port>/v2/servers/{serverName}/vhosts/{vhostName}/smilfiles/{smilfileName}/actions/copy
- To allow for backward compatibility, the old mechanism will log a deprecated message to the logs and still work for a while
- Fixed reconnectWaitTimer for MediaCaster when using .stream files and JavaScript Object Notation (JSON) format
- Fixed unbind error messages when doing multicast push
- Fixed Verimatrix DRM Module key-caching mechanism
- Added flushAndForceItemFromCache and flushAndForceStreamNameFromCache API to Media Cache to allow cached items to be forcefully removed from the cache
- Fixed MPEG-DASH live MPDs so that the timeShiftBufferDepth is reported correctly. A bug was introduced in the 4.2.0.01 update that caused the value to be off by a factor of 90, such that a buffer depth of 16 seconds would actually be reported as 24 minutes
- Fixed issue with HEVC/H.265 parsing of SPS data where short term reference pics weren't counted properly
- Fixed issue with SSL handshake that caused intermittent failures on Firefox 39.0 and newer. The initial request was getting stuck in SSLEngine because it was processed before the handshake was completed
- Fixed Transcoder issue with QuickSync encoder on Linux that wasn't returning the correct encoding parameters when enabling logVideoEncodingParameters
- Fixed AAC issue with on-demand RTSP playback
- Fixed issue when reading certain audio-only mp4 files that caused the read position to be reset
- Fixed HTTP live repeaters so they track bytes sent over the network properly
- Fixed push publishing Wowza Streaming Cloud targets so that saving from the edit page doesn't cause the saved API token on Wowza Streaming Engine to be lost
- Removed RTSP connection option and added RTMP connection option for JVC camcorders on the JVC Sources (Live) page in Wowza Streaming Engine Manager
- Fixed bad calculation for availabilityStartTime in live MPEG-DASH MPDs that caused the field value to be about 15 minutes too early
- Enabled the publishTime field in MPEG-DASH MPDs by default to align with the v2 MPEG-DASH spec. It previously needed to be enabled via the mpegdashMpdPublishTime property for the LiveStreamPacketizer or HTTPStreamer for each application
- Updated Bouncy Castle JAR from version bcprov-jdk15on-149 to version bcprov-jdk15on-152
- Improved AAC codec config decoder to enable detection of the HE-AAC object type
- Added support for AAC descriptors in the Program Map Table (PMT) when ingesting MPEG-TS streams. If they're encountered when processing the PMT, we'll set the AAC object type to the appropriate value based on the Profile indicated in the descriptor
- Added support for setting/overriding the AAC object type via the stream file for cases when the incoming AAC stream isn't type 2 (LC) and isn't properly indicated in the PMT:
mpegtsSetAACObjectType (xx in the stream file):Other values can be used. Refer to ISO/IEC 14496-3 table 1.5.1.1 ("Audio Object Type definition")
- 2 = LC (Default)
- 5 = AAC HE
- 29 = AAC HE v2
- Added VidBlaster to list of encoders so it's recognized as a publisher
- Added API to get the incoming bitrate of a live stream that's published to the server. There are two sources of bitrate data, measured (IMediaStream.PUBLISH_BITRATE_SOURCE_MEASURE) or metadata (IMediaStream.PUBLISH_BITRATE_SOURCE_METADATA):
- int IMediaStream.getPublishBitrateVideo(); // if metadata available, it will be returned; if not, measured will be returned
- int IMediaStream.getPublishBitrateAudio(); // if metadata available, it will be returned; if not, measured will be returned
- int IMediaStream.getPublishBitrateVideo(int source); // IMediaStream.PUBLISH_BITRATE_SOURCE_MEASURE or IMediaStream.PUBLISH_BITRATE_SOURCE_METADATA
- int IMediaStream.getPublishBitrateAudio(int source); // IMediaStream.PUBLISH_BITRATE_SOURCE_MEASURE or IMediaStream.PUBLISH_BITRATE_SOURCE_METADATA
- Fixed Transcoder issue that caused transparent overlays applied to decodes to flash (overlay was being applied multiple times)
- Improved Transcoder to ignore disabled encode blocks more completely
- Changed HLS EXT-X-KEY URI paramater to ensure path is URL encoded. Fixes issues with spaces in content path
- Changed HTTPStreamerUtils.encodeURL() utility to do URL-percent-encoding "%20" for spaces instead of URL-form-encoding ("+")
- Added HTTPStreamerUtils.encodeFormURL() utility to support URL-form-encoding of space as "+"
- Added XSplit to list of encoders so it's recognized as a publisher
- Fixed Cupertino Live Repeater null pointer exceptions shown in logs
- Fixed IStreamRecorder add/remove listener so all events are triggered correctly
- Improved Transcoder Intel Quick Sync H.264 implementation to handle and recover from hardware warning messages
- Added support for HEVC/H.265 video in Apple HLS (Cupertino) live and on demand streaming
- Fixed REST API errors to return the same content type as requested
- Added nDVR to file converter for single and group conversions
- Fixed hash generation for RTMP SecureToken to exclude non-specified prefixed query parameters
- Fixed HTTPStreamerCupertinoIndexPlaylist log warning about multiple-defined renditions in SMIL file. This must be permitted so that a single video rendition can be paired with more than one audio GROUP in the playlist. In this case, the video rendition (URL) is listed twice under two different #EXT-X-STREAM-INF entries
- Fixed recovery of AAC ingest for MPEG-TS when AAC packets have partial frames
- Removed the dependency on the "restURI" field as well as the field from all the REST endpoints
- Modified the following endpoints so the Swagger server will display all the parameters properly:
- /v2/servers/{serverName}/users/{userName} - renamed the "name" field to "userName"
- /v2/servers/{serverName}/vhosts/{vhostName}/startupstreams/applications/{appName}/instances/{instanceName}/streams/{streamName} - renamed the "applicationName" field to "appName"
- /v2/servers/{serverName}/vhosts/{vhostName}/publishers/{publisherName} - renamed the "name" field to "publisherName"
- Added support for Wowza Streaming Cloud CDN Stream Target destinations
- Fixed bug in Wowza Streaming Engine Manager where copying a Wowza Streaming Cloud stream target that has already retrieved a Wowza Streaming Cloud API long token wouldn't copy the long token to the copied stream target
- Fixed bug where a stream target that should show a "Waiting" status (on the Stream Targets page in Wowza Streaming Engine Manager) would instead show a "Failed" status if at least one other stream target showed an "Active" status
- Fixed logging in AMFDataList, NetConnectionCallResults, and PushPublishRTMP to remove "
" newlines for compatibility with the Logs feature in Wowza Streaming Engine Manager, which only supports single-line log entries - Fixed REST API issue where PushPublishStreamAppConfig listed the wrong default value for removeDefaultAppInstance field (false instead of true). This made it impossible to override the setting to false in the map file
- Fixed a bug where the Live Stream Recorder incorrectly updated the MDAT atom to the 64-bit atom format when passing the 4GB file size
- Fixed an issue in Live Stream Recorder where it would stop recording a stream when trying to split the stream and record to a new file when no data was received
- Fixed case where DVR recordings would throw an NPE in DvrPacketHandler because the chunk writer wasn't initialized
- Enhanced nDVR to support ID3 tags
- Enabled custom nDVR settings to be preserved when Wowza nDVR is disabled. Wowza Streaming Engine Manager used to set the settings to default values when nDVR was disabled
- Fixed NPE when no host header was provided by HTTP clients
- Added support for the OPTIONS HTTP method. Added for HTTPStreamer/Properties "httpUserHTTPHeaders" property to allow custom headers
- Added support to enable/disable URL-encoding of query parameter values. HTTPStreamer/Properties Boolean property "queryParameterValueEncode" (default is true)
- Added support for MediaCaster property "rtpMaxFailedConnectionLogCount" that controls how many attempts to connect to a source are logged (only logged, attempts will continue as configured without log entries). The log count is reset to 0 after each successful connection. Add it to an application's "Custom" properties section:
- Path - /Root/Application/MediaCaster
- Name - rtpMaxFailedConnectionLogCount
- Type - Integer
- Value - 0: Always log (default); 1 or greater: Log each connection attempt/failure up to the value entered
- Added support for RTSP/RTP playback of G.711 (µ-law and A-law) audio
- Added support for RTSP/RTP playback of MPEG-2 video
- Added support for RTSP/RTP playback of VPx (VP8 and VP9) video and Vorbis and Opus audio
- Improved Transcoder to re-create encoder if it fails to return frames (default is 150 frames)
- Added support for quicksync.AspectRatioW and quicksync.AspectRatioH transcoder template parameters to enable support for anamorphic video resolutions
- Improved Transcoder startup for NVIDIA NVENC encoding to improve how we look for driver-shared libraries
- Added workaround for Transcoder NVENC issue with surface format that appeared in latest NVIDIA Linux driver
- Added Transcoder support for multiple renditions of the same plugin libraries for Quick Sync (added Transcoder/PluginPaths/QuickSync element to Server.xml to control path - default to use default lib-native path)
- Fixed a Transcoder issue with NVENC2-encoding where improper encoder shutdown led to memory leak
- Fixed issue with Apple HLS (Cupertino) video on demand logging to avoid NPE
- Added support for custom Cupertino manifest headers. API method "addUserManifestHeader" and property "cupertinoManifestHeaders" in Root/Properties to add headers
- Fixed "httpRandomizeMediaName" property to be consistent during live streams and across manifest segments for MPEG-DASH
- Fixed property "mpegdashUserHTTPHeaders" in HTTPStreamer/Properties to be reflected correctly in the MPEG-DASH manifest output
- Fixed AAC audio frame duration calculations in MPEG-DASH on-demand streaming to ensure 1024 frame durations
- Fixed MPEG-DASH streaming to properly handle manifest requests with both file-name-embedded query parameters and URL-appended query parameters
- Added MPEG-DASH support for <cenc:pssh> elements inside the <ContentProtection> elements in DASH MPDs for encrypted streams, per recommendations in the latest Common Encryption standard. This allows for better compatibility with HTML5 JavaScript-based players
- Improved audio timecode accuracy for live MPEG-DASH streams
- Added support for new MPEG-DASH debug flags:
- mpegdashIncludeChunkStartTimeTags - (/Root/Application) Includes the "S@t" attribute (chunk start time in timescaled units) in every <S> chunk entry in DASH MPDs (instead of just the first entry), for both live and on demand streaming
- mpegdashIncludeUnscaledChunkTimeTags - (/Root/Application) Includes custom "S@t_unscaled" and "S@d_unscaled" attributes (chunk start time and duration in milliseconds) in every <S> chunk entry in DASH MPDs, for both live and on demand streaming
- mpegdashDebugFragmentTimes - (/Root/Application/HTTPStreamer) Logs scaled (a/v timescaled) and unscaled (msec) chunk start/stop/duration times on all on demand A/V chunk requests
- Enhanced logging from mpegDashLiveIndexLogging (/Root/Application/LiveStreamPacketizer) so that unscaled chunk start/duration/end times are logged for both audio and video
- Changed MPEG-DASH live streaming MPDs (SegmentTimeline format, the default) so that for streams with both audio and video, audio chunk start times reflect the timecodes of the actual audio chunks instead of audio-timescaled versions of the video chunk timecodes
- Fixed MPEG-DASH issue where for streams with both audio and video, the video timescale was reported instead of the audio timescale in the 'sidx' and 'mvhd' boxes of audio chunks, and the duration values in those same boxes were reported in that wrong timescale
- Fixed bug in ModuleCoreSecurity that prevented RTMP switching when SecureToken was used
- Fixed key rotation when "drmVerimatrixCupertinoDTVPosition" is enabled for Verimatrix DRM using live streams
- Added API to control RTMP/AMF object deserialization charsetName used for strings (default is UTF-8):
- AMFDataContextDeserialize.setChartsetName(String charsetName);
- AMFDataContextDeserialize.getChartsetName();
- Fixed "cupertinoEncryptionBaseURL" property when the header host isn't provided
- Added IMediaCacheStoreItemListener and IMediaCacheStoreItemEvent API interfaces and CacheStoreItemListenerClassList MediaCache configuration item
- Fixed the "mpegtsMapTimeToSystemTime" property support where the stream validator was resetting the depacketizer and the server wasn't resetting the mapping to force a recalculation
- Fixed on demand Adobe HDS (sanjose) logging issue where file information wasn't logged as part of the connect and stream create events
- Fixed the PushPublishStreamAppConfig REST API configuration to use a default value of "true" for the sendOriginalTimecodes field and a default value of "0x100000" for originalTimecodeThreshold to match the defaults in the Push Publishing module
- Fixed NPE in Wowza Streaming Engine when debug statements are printed with Livideo6 stream connection from Akamai
- Fixed NPE in Wowza Streaming Engine when 401 is returned from a source during digest authentication to Sony and Axis cameras
- Fixed an issue in Wowza Streaming Engine Manager where stream files weren't being updated with Pan/Tilt/Zoom (PTZ) user name and password when editing the stream file in the manager
- Updated the Windows Service manager executable to 2.24 and applied Wowza-specific changes to it. Also updated the install/uninstall batch files
- Added ability in the Push Publishing module's "rtmp" profile to filter metadata items from onMetaData messages on a per-map-entry basis. Associated new map entry properties:
- removeMetadataObjects (Boolean) - enables removal of all array and object data types
- filteredMetadataItems (String) - allows definition of a pipe-separated list of named metadata items to remove
- Optimized selection of on demand caption provider when file is specified via SMIL file
- Enhanced logging provided by the mpegdashIncludeUnscaledChunkTimeTags property to include "S@end" and "S@end_unscaled" debug attributes, providing the scaled and unscaled chunk end times
- Changed MPEG-DASH example players to be based on the Shaka Player Project. Google Shaka Player is more compatible with the MPEG-DASH implementation in Wowza Streaming Engine