• Wowza Media Server 3.6.2 Release Notes

    Version: Wowza Media Server™ 3.6.2 build 5334 released on 10 June, 2013.


    New Features and Functionality in Wowza Media Server 3.6
    Detailed Changes - 3.6.2
    Detailed Changes - 3.6.0

    New Features and Functionality in Wowza Media Server 3.6

    Note: If you haven't installed Wowza Media Server 3.5.0, be sure to review the New Major Features in Wowza Media Server 3.5 before installing Wowza Media Server 3.6.0.

    MPEG-DASH Technology Preview

    Wowza Media Server 3.6 adds basic support for Dynamic Adaptive Streaming over HTTP (DASH), also known as MPEG-DASH, to its existing suite of supported streaming formats. MPEG-DASH is a new international standard for adaptive streaming that's being adopted by the streaming industry. Wowza has tested its MPEG-DASH support using several DASH clients.

    See: How to do MPEG-DASH streaming

    Closed Captioning

    Wowza Media Server 3.6 includes expanded support for closed captioning formats for live and video on-demand streams, which were first introduced in Wowza Media Server 3.5. Wowza Media Server enables caption data from a variety of instream and file-based sources to be converted to appropriate caption formats for live and on-demand video streaming using the Apple HTTP Live Streaming (Apple HLS), Adobe HTTP Dynamic Streaming (Adobe HDS), and RTMP protocols. This feature helps US broadcasters to comply with the Twenty-First Century Communications and Video Accessibility Act of 2010 and increasing requirements in the European Union by providing captioning for television programs that are distributed over the Internet.

    For live streams, Wowza Media Server can ingest instream closed caption information from Action Message Format (AMF) onTextData events or CEA-608 data. These ingested captions can be delivered in Adobe HDS and RTMP streams as AMF onTextData events, in Apple HLS streams as CEA-608 captions, or in Apple HLS streams for Apple iOS devices (iOS 6 or later) as Web Video Text Tracks (WebVTT) subtitles. In addition, instream CEA-608 caption data can be passed through Wowza Transcoder AddOn for delivery in Apple HLS streams to iOS-based devices.

    For video on-demand streams, Wowza Media Server can extract caption data from 3GPP Timed Text data embedded in MP4 files or use caption files in a variety of formats including Timed Text Markup Language (.ttml), SubRip Text (.srt), Scenarist Closed Caption (.scc), and Web Video Text Tracks (.vtt). These ingested captions can be delivered in Adobe HDS and RTMP streams as AMF onTextData events, in Apple HLS streams as CEA-608 captions, or in Apple HLS streams for Apple iOS devices (iOS 6 or later) as WebVTT subtitles. Delivery of VOD sidecar files is also supported.

    See: Closed Captioning Overview

    Mobile Encoding

    The Wowza™ GoCoder™ app is a live audio and video application for Apple iPod touch (iOS 4.0 or later) and iPhone (3GS or later) that allows content providers to encode live content right from their iOS device and deliver it to Wowza Media Server in real time over 4G, 3G, and Wi-Fi systems.

    See: How to use Wowza GoCoder video broadcasting iOS app

    NVIDIA NVENC Accelerated Encoding

    Wowza Media Server 3.6 supports the new NVIDIA graphics cards with the new Kepler GPU architecture to enable accelerated transcoding with Wowza Transcoder AddOn at greater scale and speed. These graphics cards incorporate a new hardware-based H.264 video encoder (called NVENC) that's nearly four times faster than legacy CUDA encoders while consuming less power. Support for NVIDIA NVENC accelerated encoding is included in Wowza Media Server 3.6 for 64-bit Windows and Linux operating systems.

    See: Server specifications for NVIDIA NVENC acceleration with Wowza Transcoder

    Verimatrix KMS with PlayReady Encryption

    Wowza DRM AddOn integrates with Verimatrix Key Management Services (KMS) for Microsoft Smooth Streaming. This allows studio-grade Microsoft PlayReady DRM to be applied to Smooth Streams that are delivered to a wide variety of Smooth Streaming clients. This bolsters existing support for Verimatrix VCAS protected Apple HLS playback with ViewRight clients on iOS-based devices, Android devices, PCs, and set-top boxes.

    See: How to set up Verimatrix DRM

    Live Stream Record

    Enhancements to the Live Stream Record feature in Wowza Media Server 3.6 give you more flexibility and control over how live streams are recorded by providing options to record live streams at both the server and application level and by enabling support for property overrides. Live Stream Record, formerly a free AddOn, was incorporated into Wowza Media Server 3.5 as an API that gives you more control over recording live streams to video on demand files. It enables you to control the live stream recording process using a web-based user interface, HTTP URL queries, or programmatically. You can split in-process live stream recording archives into multiple on demand MP4 (QuickTime container) or FLV (Flash Video container) files automatically, with the split points based on video duration, clock time, or file size. A developer user interface is also included, which shows all current live streams and gives the option to record or stop recording a stream.

    See: How to record live streams (HTTPLiveStreamRecord)

    AC-3 Passthrough

    Wowza Media Server 3.6 allows Dolby Digital (AC-3) and Dolby Digital Plus (Enhanced AC-3) audio from MPEG-TS encoders to pass through unaltered for delivery using Apple HLS. This allows your customers to experience immersive surround-sound audio when streaming on media devices such as Apple TV, Sony PlayStation 3 (PS3), hybrid set-top boxes, and smart TVs.

    Detailed Changes - 3.6.2

    Wowza Media Server 3.6.2 is a minor update to Wowza Media Server 3.6.0 and fixes the following issues:

    • Fixed Apple HLS audio only rendition processing
    • Replaced two bad Wowza Transcoder .dll libraries with correct libraries
    • Fixed DASH Live playback exception triggered when a request for DASH manifest was received before chunks any associated chunks were available.
    • Fixed a bug in the MPEG Transport ingest when the mpegtsVideoIsAligned flag is set to false
    • Fixed a bug in the MPEG Transport ingest to properly consume stuffing bytes in the PES Header
    • Fixed a bug in the MPEG Transport ingest in processing unaligned video
    • Improved transcoder licensing to release the transcoder license earlier when the transcoder for a stream is shutdown
    • Added a delayed shutdown mechanism for transcoder to ensure it does not crash if taking a long time to stop
    • Fixed bug in live stream record UI that caused recording not to start if invoked from URL
    • Improved RTP and MPEG-TS packet writing to calculate packet size more consistently
    • Fixed missing library error when using Wowza Transcoder on some Linux distributions
    • Fixed security issue with HTTP and RTSP streaming to disallow special characters in the URL path
    • Minor change to HTTP and RTSP streaming to force header date format to US locale
    • Minor change to Live Stream Record UI to sort stream names alphabetically

    Detailed Changes - 3.6.0


    • Fixed NullPointerException that would occur when rtmp connect request "flashver" was specified instead of "flashVer". (seen on initial connection from XSplit encoder)
    • Fixed NullPointerException that would occur on rtmp processFunctions request when a function with command string was received. (seen on XSplit disconnection)
    • Modified ModuleConnect (RTMP) to look for Flash version string as both "flashVer" and "flashver"
    • Fixed issue with debugIncomingPacketTimes logging that caused audio packets to be lost and added support for data packets
    • Added application instance level API for listening to RTP and HTTP session create and destroy events:
      • IApplicationInstance.addRTPListener(IRTPSessionNotify rtpListener);
      • IApplicationInstance.removeRTPListener(IRTPSessionNotify rtpListener);
      • IApplicationInstance.notifyRTPSessionCreate(RTPSession rtpSession);
      • IApplicationInstance.notifyRTPSessionDestroy(RTPSession rtpSession);
      • IApplicationInstance.addHTTPListener(IHTTPSessionNotify httpListener);
      • IApplicationInstance.removeHTTPListener(IHTTPSessionNotify httpListener);
      • IApplicationInstance.notifyHTTPSessionCreate(IHTTPStreamerSession httpSession);
      • IApplicationInstance.notifyHTTPSessionDestroy(IHTTPStreamerSession httpSession);

    • Fixed NullPointerException in stream demo publisher for when application does not exist
    • Updated HTTP, RTSP and SIP processing code to look for both "referrer" and "referer" to find the referrer header
    • Added MediaStream addCallbackListener method to add a class to get stream metadata events
    • Added set/get UnpublishOnEnd method to Stream class to unpublish when a non-repeating playlist ends
    • Fixed MediaReaderH264 so it only throws read warning log message once per-session
    • Fixed stream name processing to remove ".." references to disable backward directory references
    • Improved MediaReaderH264 logging to include context information
    • Improved NetConnection error message regarding _result RTMP messages
    • Added support for AC-3 audio in smooth live streams
    • Changed inaccurate HTTP streaming session warning message from "Over license limit" to "Invalid session"
    • Added MediaReaders/Properties boolean property mp4CalculateDatarate to turn on/off adding audio and video data rate calculations (default is false)
    • Added <HTTPIdent2Response> XML tag to <HostPort> definition
    • Fixed memory leak with RTMPS streaming when proxyType was set to BEST
    • Added support for RTMPT /fcs/ident2 responses to HostPort config in conf/VHost.xml
    • Fixed imprecise math related to MP4 seeking
    • Fixed live stream SEI notify system to properly set the AMFPacket timecodes before calling notify
    • Added better logging to low level Mina socket configuration API
    • Fixed bug where MediaReaderH264.setDataTrackIndex was not honored. It is now correctly honored if no caption provider has been specified
    • Fixed live stream repeater shared secret property problem
    • Improved Live Stream Repeater watchdog timeout logging to include the stream name
    • Fixed synchronization problem with MediaReaderH264 when bufferSeekIO is true
    • Fixed HTTP basic authentication NullPointerException when username/password do not match

    HTTP Streaming (Apple HLS, Adobe HDS, MPEG-Dash, Smooth Streaming)

    • Fixed HTTPProviderMediaList to return bits-per-second for JW player SMIL responses
    • Fixed packetization problem with Apple HLS and Adobe HDS where DTS values were used instead of PTS values during chunking process (lead to "over flush iteration" warning)
    • Fixed synchronization problem with packetization runners
    • Improved Apple HLS live stream packetizer to properly switch a stream from audio only to transport stream mode if video is published at a later time
    • Fixed incorrect method name in log messages in HTTP Streamer code
    • Fixed problem with wowzaplayduration not working properly with smooth streaming (audio went past duration specified)
    • Fixed cupertino and sanjose packetizer to properly deal with video/audio streams when the video is no longer present in the stream
    • Added HTTPStreamer/Properties boolean property cupertinoAddTSOffset to control adding a 10 second offset to TS packets for Apple HLS delivery (default is true per Apple recommendation)
    • Updated Apple HLS VOD streaming to start with a chunk index of 0 for the first chunk (to match the Apple segmenter behavior)
    • Fixed unsupported H.264 warning message for older iOS devices. Trigger message for Main 3.1 as minimum
    • Added HTTPStreamer/Properties string properties (listed below) which is a pipe (|) delimited list of query parameters that will not be carried to the media URLs if they are present in the manifest/playlist URL
      • httpQueryStrRemoveList (Removed from all forms of HTTP streaming)
      • cupertinoQueryStrRemoveList (Removed from Apple HLS streaming)
      • sanjoseQueryStrRemoveList (Removed from Adobe HDS streaming)
      • smoothQueryStrRemoveList (Removed from Microsoft Smooth streaming)
      • mpegdashQueryStrRemoveList (Removed from MPEG-DASH streaming)

    • Removed errant Adobe HDS log message regarding encryption
    • Added HTTPStreamer/Properties boolean property vodCupertinoPlaylistAllowCaching which controls the Apple HLS caching header EXT-X-ALLOW-CACHE for VOD playback
    • Added support for AC-3 video on demand for Apple HLS delivery
    • Fixed problem where attempting to stream a VOD or smil that does not exist would post a NullPointerException in the log
    • Fixed case where HLS would return an empty playlist or chunklist with sessionID instead of a 404 when VOD asset or smil did not exist
    • Fixed onCheckAvailability for HLS streaming, was always returning true
    • Added support for user HTTP headers for HTTP streaming to be specified in conf/HTTPStreams.xml and conf/[application]/Application.xml (in HTTPStreamer/Properties container). The following properties are supported:
      • httpUserHTTPHeaders: To add headers to all forms of HTTP streaming responses
      • cupertinoUserHTTPHeaders: To add user HTTP headers to Apple HLS responses
      • smoothUserHTTPHeaders: To add user HTTP headers to smooth streaming responses
      • sanjoseUserHTTPHeaders: To add user HTTP headers to Adobe HDS responses
      • mpegdashUserHTTPHeaders: To add user HTTP headers to MPEG-DASH responses

    • Fixed HTTPStreamerAdapterCupertinoStreamer to remove trailing & and ? when {query} is empty
    • Added smooth streaming audio extensions
    • Fixed problem with Apple HLS chunks not being the same when making HTTP byte requests
    • Added code to automatically reset Apple HLS continuity counters to zero if byte request
    • Added HTTP 1.1 HEAD and Range request support for streaming content.
    • Fixed HTTPStreamerSmoothStreamerIndexBase to create manifest with Indexes in the same order as the smil file
    • Fixed problem with packetization for Apple HLS, Adobe HDS and nDVR that lead to "recycle" warning
    • Fixed HTTP streaming so that onHTTPSessionCreate is always called once for each session
    • Fixed HTTPStreamerSanJoseIndex indexPlayList() to correctly propagate smil file begin and dur values

    Wowza Transcoder AddOn

    • Fixed NVENC transcoder problem on some versions of Linux that lead to the following exception (NVENC error at nvenc/src/CNVEncoder.cpp:1313 code=15(NVENC indicates that an invalid struct version was used by the client) "nvStatus")
    • Fixed problem with array type transcoder parameters not being settable
    • Fixed problem with transcoder that could lead to memory run-up
    • Improved transcoder to reset the video decoder if it stops returning valid frames
    • Updated to latest MainConcept MP1/MP3 audio decoder
    • Fixed transcoder to properly allow decoder reset
    • Updated transcoder NVENC implementation to use CUDA if NVENC is not available but CUDA is available
    • Added encoding parameters for NVENC encoder
    • Improved encoding parameter description for many of the settings
    • Improved encoding parameter logging so that it is a more logical order
    • Added support for NVidia NVENC accelerated encoding on Linux
    • Fixed transcoder Quick Sync on Linux problem with 0.33 API with baseline encoding reference frames being counted incorrectly (reset frame number on keyframe)
    • Fixed transcoder Quick Sync on Linux problem with 0.34 API with encoding reference frames being counted incorrectly (reset frame number on keyframe)
    • Added initial support for NVENC NVidia encoder (the <Transcoder> value is NVENC - Kepler hardware is required)
    • Fixed problem with transcoder overlay image CheckForUpdates stopping (logic to check frequency was backwards)
    • Fixed transcoder bitrate calculator so that it uses audio and video bitrates specified in template if passthru.
    • Fixed transcoder letter box fitmode so that it properly erases the screen if display size changes
    • Fixed problems with loading and reloading overlays
    • Fixed transcoder scaling problem with letterbox and crop when source video frame size is different from display size (anamorphic squeeze)
    • Enhanced transcoder to add sampledescription info to onMetaData when incoming stream does not supply onMetaData

    Wowza nDVR AddOn

    • Fixed case where multiple log lines could occur on DVR idle timeout check
    • Fixed problem where DVR HDS streams would have audio drop out and jump back in time
    • Added DVR property "dvrStreamRecordedData" (Boolean, def:true) to allow turning off streaming of data recorded in DVR
    • Fixed storage of DVR data events to correctly set initial packet time and durations. In some cases, a combination of data events at same time could confuse the OSMF player
    • Fixed DVR packetizer to properly deal with video/audio streams when the video is no longer present in the stream
    • Fixed problem where the DVR window was not repeated to the edges, causing HDS manifest to incorrectly state dvrInfo duration of -1
    • Improved log warning when dvr recorder is enabled but dvrstreamingpacketizer is not
    • Fixed synchronization problem where multiple DVR streams in same app starting initial recording simultaneously could cause "Unable to create folder [appname]/_definst_ for DVR Store."
    • Remove meaningless DVR warning "V/D packet times differ by more than <n> ms"
    • Improved log message when DVR store not found
    • Improved nDVR, HTTP and transcoder packetizer runners to improve locking and exception handling
    • Fixed NoSuchElement exception that sometimes occurred during DVR repeater teardown

    Wowza DRM AddOn

    • Removed duplicate call in ModuleDRMVerimatrix createKeyto key prefetch for first key, so first key in rotation is only request once.
    • Fixed VerimatrixUtils.httprequest to check for response code 200 before processing response as valid to prevent exceptions
    • Added warning when stream is not found in stream verimatrixstreamtomap.txt instead of null pointer exception
    • Modified ModuleDRMVerimatrix log statements to display path to verimatrixstreamtomap.txt file for stream not found warnings
    • Fixed bug where cupertino parameter was used in check for smooth ifFailFakeKey
    • Fixed BuyDRM module to properly handle ${KeyIdGenerator.Random} for keyId and ContentId in map file
    • Fixed bug in ModuleDRMVerimatrix which prevented the processing of good PlayReady DRM keys.
    • Updated BuyDRM service URL

    Closed Captioning

    • Fixed incorrect capitalization on TimedTextProviders.xml live ingest type onTextData
    • Improved parsing of TimedTextProviders.xml to provide warning if LiveIngestType is missing
    • Improved NullPointerException check in VOD CC providers
    • Fixed CC file readers to better support different encodings and to strip byte order marks if they occur
    • Fixed case where Timed Text to AMF converter would insert blank captions at time=-1
    • Simplified VOD CC debug logging
    • Fixed problem where onTextData carriage returns were converted to periods
    • Fixed onTextData to CEA-608 caption conversion when existing onTextData is an AMF Mixed Array
    • Fixed issue with CEA608 caption ingestion when caption pts order is different than dts order
    • Fixed potential NullPointerException in conversion to CEA608 captions
    • Fixed NullPointerException in logs when using VOD CC, specifying specific file name via URL, but not enabling the associated Timed Text Provider
    • Improved VOD CC debug logging for file determination to include VOD context and name of provider
    • Added support for VOD SCC captions to AMF onTextData
    • Added TimedText Property "cupertinoVODCaptionsRemoveExistingCEA608" (Boolean, default=false) to allow removal of existing CEA-68 captions from VOD assets
    • Added ModuleOnTextDataToCEA608 Application Property "closedCaptionLiveRemoveExistingCEA608" (Boolean, default=false) to allow removal of existing CEA-68 captions from live streams when injecting CEA-608 captions
    • Fixed CEA608 decoder case where EOC should keep state set to POP_ON_MODE not 'NONE'
    • Enhanced SEI Message extraction/injection code to handle multiple SEI Units
    • Improved processing of CEA608 closed captioning data through transcoder
    • Fixed problem where second set of SEI messages in a NAL unit was not added to H264SEIMessages
    • Turn enableTranscoderResults off by default in ModuleOnTextDataToCEA608
    • Added support in Wowza Transcoder for CEA608 captions to be copied from the source stream to the destination streams (can be configured on a per-Encode block basis using the boolean property copyCEA608CaptionsFromSourceStream - default is true, can be configured on a per-source stream basis using LiveStreamTranscoder/Property boolean property extractSEIDataFromDecodedStream)
    • Fixed potential index exception in CEA608 decoder
    • Fixed CEA08 parsing of NBSP-- now converts to regular space
    • Fixed bug where if specified caption language was '*', the caption language selected was not predictable. Now selects first in the file, as expected
    • Added ability to map unsupported CEA608 CC characters to reasonable CEA608 supported characters via CEACaptionConversion.xml in both VOD and Live
    • Fixed backward compatibility issue with ClosedCaptioningLive module.
    • Added ability to provide custom character conversion when creating CEA608 captions. Some characters (for example, several Romanian character) are not in the CEA608 character set so this allows conversion to a reasonable fallback character
    • Added VOD Scenarists Closed Caption (SCC) support
    • Added CEA608 parser for SCC

    Live Stream Record

    • Updated live stream record web filtering to track and use appFilter in web page
    • Added support for application name filtering for webpage to HTTPLiveStreamRecord.java
    • Fixed bug in LiveStreamRecordMP4 where packets were lost at the start of segmented files causing the first entry in the STTS to be huge
    • Fixed issue with LiveStreamRecord Property overrides where filepath property used the filename if included in the filepath
    • Fixed bug where LiveStreamRecord override property append was not being honored
    • Added the ability to set LiveStreamRecord properties in application.xml which override values passed into LSR API's and LSR webpage.
    • Added property liveStreamRecorderRecordData which overrides value of recordData set by any other method
    • Fixed bug in LiveStreamRecorderMP4 where packets with timecodes less than the recording start timecode where not being skipped which caused A/V sync issues

    Live Stream Ingestion

    • Improved RTP logging for H.264 ingestion to only throw packet type errors once for each packet type
    • Loosened requirement for exact case when finding live ingest type
    • Fixed the case where an audio encoder adds some fluff to the end of an audio PES packet to fill out a TS packet which causes the server to discard the last TS packet of data because it would cause a buffer overflow condition.
    • Fixed problem with advanced stream monitor not properly working with push publishing to trigger a stream push
    • Fixed mediacaster stream stop not calling notification for listeners
    • Defaulted mpegtsDropIncompleteVideoFrames to true.
    • Improved try/catch blocks for RTP MediaCaster
    • Improved MediaCaster notifiers to be properly synchronized and more consistent
    • Merged the new MPEG-TS framework into the trunk to get it into the next 3.6 patch
    • Fixed log spelling error in MPEG-TS depacketizer INGORE = IGNORE
    • Exposed MediaCaster item lock through IMediaCaster
    • Fixed the PCR clock manufacturing for MPEGTS out.
    • Added support for a boolean property mpegtsDisablePCRPID in the Application.xml Application/Streams/Properties. Default is off.