Wowza Media Server 3.0.2 Release Notes

Wowza Media Server 3.0.2 Release Notes

Note: Wowza Media Server 3.0.2 is maintenance release to fix the following two problems:
  • 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.2 build866 (16 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 problem with startup code that resulted in server shutdown when generated random number had first 9 digits set to all 1's
  • 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)