• Wowza Media Server 3.0.3 Release Notes

    Wowza Media Server 3.0.3 Release Notes

    Note: Wowza Media Server 3.0.3 is maintenance release to fix the following three problems:
    • Fixed iOS streaming problem with TARGETDURATION for both live and vod streaming that resulted in playback problems in iOS 5 (Msg on iOS device: "The operation could not be completed")
    • Startup problem that caused the server to exit immediately
    • Live stream repeater problem that caused streams to stop if encoder reconnected to origin


    Wowza Media Server 3.0.3 build882 (25 October 2011)

    New Features


    • Live Stream Transcoder
      • Support for transcoding on Windows 64-bit and Linux 64-bit (no support for 32-bit or OSX at this time)
      • CUDA accleration available on Windows
      • Intel Quick Sync acceleration available on Windows
      • Following formats are supported:
        • Video decoding: H.264, MPEG2, MPEG4 Part 2
        • Video encoding: H.264
        • Audio decoding: AAC, MP3, MPEG 1 Part 1/2, Speex, G.711 (mu-law, a-law)
        • Audio encoding: AAC
      • Following ingestion protocols are supported:
        • H.264: RTMP, RTSP/RTP && native RTP (IETF RFC3984, QuickTime Generic RTP Payload Format), MPEG-TS (ISO/IEC 13818-1), MPEG-TS over RTP (IETF RFC2038)
        • ACC: RTMP, RTSP/RTP && native RTP (IETF RFC3640, IETF RFC3016, ISO/IEC 14496-3), MPEG-TS (ISO/IEC 13818-1), MPEG-TS over RTP (IETF RFC2038)
        • MP3: RTMP, RTSP/RTP && native RTP (IETF RFC2250), MPEG-TS (ISO/IEC 13818-1), MPEG-TS over RTP (IETF RFC2038)
        • MPEG2: RTSP/RTP && native RTP (IETF RFC2250), MPEG-TS (ISO/IEC 13818-1), MPEG-TS over RTP (IETF RFC2038)
        • MPEG1 Part 1/2: RTSP/RTP && native RTP (IETF RFC2250), MPEG-TS (ISO/IEC 13818-1), MPEG-TS over RTP (IETF RFC2038)
        • MPEG4 Part 2: RTSP/RTP && native RTP (IETF RFC3106), MPEG-TS (ISO/IEC 13818-1), MPEG-TS over RTP (IETF RFC2038)
      • Rich API (better document API with clear examples for final release)
      • Considering a deeper video profile system to control lower level encoding parameters
      • Transcoding templating system for defining encoding parameters
        • StreamNameGroups feature for creating multi-bitrate groups
        • Support for looping the source stream back into encoding list so it can be part of a StreamNameGroup
      • All transcoded streams are sorted and aligned using a 750ms sort buffer
      • Support for image overlays (watermarks) with transparency
      • Support for cropping of source video frame

    • Network DVR (nDVR) (beta)
      • Single nDVR cache - any screen playback
      • Records H264 Video and either AAC or MP3 Audio
      • Playback of recorded streams via HTTP Streaming (Cupertino, San Jose, Smooth Streaming)
      • Multi-bitrate stream support (currently assumes streams as recorded are time aligned)
      • Support for pause, seek, resume
      • Rich APIs (better document API with clear examples for final release)
      • Origin Edge Support
      • Memory cache of most recent Audio and Video chunks for better performance.


    • Digital Right Management (DRM)
      • Verimatrix support for iOS streams
      • PlayReady support for smooth streaming streams
      • New low-level encryption API to enable iOS key rotation for live streams (will be documented in a later build)

    • Other features
      • New MediaList system to enable custom parsers and API for group streams for multi-bitrate delivery
      • Improved MPEG-TS ingestion (should be able to handle higher bitrate streams, more efficient)
      • Support for MP4 data event (AMF0 and AMF3) video-on-demand playback and recording
      • Support for multi-language subtitles in MP4 files for video-on-demand playback
      • Ability to specify a video on demand play start time and duration for iOS, Smooth and Flash HTTP streaming
      • Many other improvements


    Detail list of changes: (since: 3.0.0)
    • Fixed iOS streaming problem with TARGETDURATION for both live and vod streaming that resulted in playback problems in iOS 5 (Msg on iOS device: "The operation could not be completed")
    • Fixed problem with startup code that resulted in server shutdown when generated random number had first 9 digits set to all 1's
    • Live stream repeater problem that caused streams to stop if encoder reconnected to origin
    • Added more robust code to kill errant RTMP connections
    • Added support for proxy authentication
    • DVR Cupertino streaming for non-recording (non-live) case now provides a playlist containing an end marker. This causes playback on ios to start at time = 0 and the scrub bar to show an end time, and playback to stop when it reaches the end.
    • DVR San Jose streaming for non-recording (non-live) case provides a playlist containing an end marker. This causes playback on Strobe to start at time = 0, the scrub bar to show an end time, and playback to stop when it reaches the end.
    • When presenting a non-live DVR playlist, include the 2 extra chunks past the live point, as they do not need to be buffered as in the live case
    • Added method ILiveStreamDvrRecoder.getAppInstance()
    • Removed IDvrStreamManager.setDvrStorageWindowSeconds(), setDvrStorageDir(), and setArchiveStrategy(). DvrApplicationContext should be used to set these.
    • Removed unused DvrApplicationContext methods isRecorder() and setIsRecorder()
    • Fixed DVR delete mode. DVR was failing to move the old store to a ".delete" folder name before trying to delete it.
    • Added log messages for successful and failed attempts to delete old DVR store.
    • Improved logic for generating the folder name the old stores are renamed to, ensuring the rename folder doesn't already exist.
    • Added StringUtils.equals(), which includes null protection and comparison.
    • Implemented API to allow output recording name to be different from input stream name.
    • Provided methods to manage start/stop/shouldRecordOnStartup in ILiveStreamDvrRecorder instead of IDvrStreamManager
    • Changed DVR recorder stream timeout from 60 to 300 seconds to better account for encoder restarts during DVR recording
    • Add support for archive method "delete" when stream starts recording instead of when stores are loaded, to allow a recorded stream to be played before recording starts in "delete" mode
    • Added example HTTPProvider for starting and stopping recording of DVR stream by allowing recordingname to be set
    • Changed for DVR, when encoder unpublished the DVR recorder was immediately destroyed. Now "streamTimeout" property is respected.
    • Fixed case when player requested a specific version of a DVR recording (foo.0) and instead the highest available version was provided.
    • Updated Transcoder to allow transcoder to work with central configuration system
    • Fixed SMIL parser to properly support system-bitrate and systemBitrate
    • Added for Cupertino streaming and we are not recording, allow checkAvailability to trigger a load of an existing DVR store


    Detail list of changes: (since: 2.2.4.x)
    • Added HTTP provider to take ngrp and return SMIL HTTPProviderGetMediaListAsSMIL
    • Added API to MediaList to return as SMIL
    • Fixed synchronization problem in LiveReceiver flush method
    • Improved debug logging for advance stream monitor
    • Added API to get/set forceMPEGTSOut to RTPStream API
    • Added support for setting the MPEG-TS video and audio PID and streamID
    • Added normalized transcoder logging to enable more generalized accounting
    • Added support for grabbing images from the transcoder (HTTPProvider)
    • Fixed ID3 tag generator for iOS streaming to properly encode header and footer tags in TS
    • Fixed metadata propogation problem with San Jose streaming (now use videocodecinfo to get width/height rather than metadata block)
    • Fixed small RTSP problem with interleave combined with UDP delivery
    • Added support for native RTP AAC streams that are missing the config property in the SDP data but include DTS headers
    • Fixed metadata propogation problem with San Jose streaming (now use videocodecinfo to get width/height rather than metadata block)
    • Added support for MP4 file sbtl tracks which are sent as onTextData AMF events
    • Added new example code for audio, video, data track selection in MP4 files
    • Added support for timed events in iOS streaming
    • Fixed potential string length issues with double byte characters in ID3 tags
    • Added support for HTTP and RTSP redirects
    • Added support for MPEG-TS filtering by programID and audioLanguage
    • Updated RTSP/RTP to use stream name as session name in SDP data
    • Improved log message when A/V are out of sync
    • Added onCodecInfoVideo and onCodecInfoAudio to IMediaStreamActionNotify3
    • Added support for AMF data in MP4 files both read and write
    • Added ability to add custom user HTTP headers to HTTP streaming responses
      • IHTTPStreamerSession.setUserHTTPHeader(String name, String value);
    • Added Stream property rtpAACMaxAudioGroupSize to control the number of audio packets per RTP packet
    • Added support for spaces in RTSP/RTP stream names
    • Added new amlst media list reader type for resolving media lists using application instance level API
    • Added ability to specify playStart and playDuration when streaming video on demand using HTTP streaming
      • query params playstart=[time-milliseconds] and/or playduration=[time-milliseconds]
      • IHTTPStreamerSession API setPlayStart and/or setPlayDuration
      • SMIL file using <video> tag property begin (play start in seconds) and dur (play duration in seconds)
      • MediaListRendition API setPlayStart and/or setPlayDuration
    • Modified HTTP streaming system to create a phantom HTTP session before calling resolve play alias (phantom session will be populated based on underlying HTTP request)
    • Enhanced HTTP session base to now include all HTTP header information from underlying HTTP request
    • Added following methods to IHTTPStreamerSession
      • public Map<String, String> getHTTPHeaderMap();
      • public String getHTTPHeader(String name);
      • public int getHTTPIntHeader(String name);
      • public Set<String> getHTTPHeaderNames();
    • Added support for MPEG-TS streaming carrying MPEG2 where each logical PES packet includes an entire GOP
    • Fixed MPEG-TS parser to properly handle program maps broken over multiple segments
    • Fixed MPEG-TS parser to properly handle multiple program maps in a single TS stream
    • Enhanced metadata processing for HTTP streaming (width, height and codec information)
    • Added new util method getRepeaterOriginURLs() using logic found in mapMediaCasterName()
    • Fixed overall width and height f4m information for San Jose multibitrate DVR streaming. Overall width and height is now maximum of each w and h
    • Added toString to LiveStreamPacketizerList Guard against NPE in LiveStreamPacketizerBase.getContextStr
    • Added new CipherSuites and Protocols elements to SSLConfig in conf/VHost.xml
    • Fixed problem with GMT dates not using GMT timezone
    • Fixed problem with multicast TTL values correctly propogating to multicast transport layer
    • Turned on OriginalTimecodes flag for live stream repeater streams
    • Changed NetConnection response AMF object id from 4 to 3 to work with Red5 as RTMP origin
    • Added sent/received packet count to unbind statement for UDP/multicast streaming
    • Fixed RTSP/RTP CSeq parsing issue (trim value before converting to integer)