• Wowza Media Server 2.2.4 Release Notes

    Wowza Media Server 2.2.4 Release Notes

    Changes since 2.2.3


    • Added HTTP headers "Cache-Control: no-cache" and "Connection: Keep-Alive" to the crossdomain.xml and clientaccesspolicy.xml responses
    • Added Cupertino streaming AES-128 encryption API:
      • public abstract void onHTTPCupertinoEncryptionKeyData(HTTPStreamerSessionCupertino httpSession, IHTTPRequest req, IHTTPResponse resp, byte[] encKeyData);
      • public abstract void onHTTPCupertinoEncryptionKeyVODChunk(HTTPStreamerSessionCupertino httpSession, IHTTPStreamerCupertinoIndex index, CupertinoEncInfo encInfo, long chunkId, int mode);
      • public abstract void onHTTPCupertinoEncryptionKeyLiveChunk(ILiveStreamPacketizer liveStreamPacketizer, String streamName, CupertinoEncInfo encInfo, long chunkId, int mode);
    • Added IClient.setThreadContext
    • Added MP4 file writing warning log statement when file is written that requires 64-bit atom structures (file is not compatible with QuickTime on Windows)
    • Added integer setting MediaCasters/Connections/SocketConfiguration/ConnectionTimeout to control TCP timeout (milliseconds) for outgoing MediaCaster connections (rtp, livestreamrepeater, shoutcast)
    • Added following API calls to enable data to be sent in AMF3 format always
      • IMediaStream.sendAMF3
      • IMediaStream.sendDirectAMF3
    • Added method to fix incoming H.264 streams that have odd NAL unit structure (mixture of length and start code based NAL units)
      • Added following Streams/Properties to control configuration:
        • boolean property fixH264VideoNALLenStartcodeMix to turn on/off processing (off by default)
        • integer property h264VideoNALLenStartcodeLen to control the length of the start codes (3 by default)
    • Added method to inspect incoming H.264 stream to remark the frame type based on H.264 NAL unit data
      • Added following Streams/Properties to control configuration:
        • boolean property extractH264VideoFrameType to turn on/off processing (off by default)
    • Added StreamUtils.getStreamBitrate that will return the bitrate of a file (bits-per-second)
      • StreamUtils.getStreamBitrate(IMediaStream stream)
      • StreamUtils.getStreamBitrate(IApplicationInstance appInstance, String streamName)
    • Added HTTPStreamer/Properties boolean property sanjoseDebugFragmentRequestErrors to enable logging of missing live San Jose streaming fragments
    • Added RTP/Properties boolean property rtpResyncAudioVideoOnSR to turn on/off resyncing of audio/video on RTCP SR packets
    • Added RTP/Properties integer properties udpManagedDeliveryDelay and udpManagedDeliveryCount to control UDP data flow (quality of service)
      • udpManagedDeliveryCount: number of UDP packets sent before a delay is inserted in the stream
      • udpManagedDeliveryDelay: number of milliseconds to delay/pause between UDP packet groups
    • Added try/catch block in liverepeater MediaCaster to properly handle TCP errors more gracefully
    • Added following API that enables query string data to be added to HTTP streaming Manifests and playlist URLs
      • String IHTTPStreamerSession.getUserQueryStr();
      • void IHTTPStreamerSession.setUserQueryStr(String userQueryStr);
    • Added RTP/Properties boolean property rtpIgnoreProfileLevelId to turn off profile-level-id parsing (profile level ID extracted from SPS/PPS NAL units)
    • Added MediaCaster boolean property rtspRemoveUserInfo when true the username and password information from RTSP/RTP URLs is removed before requesting a stream from an IP camera (default is true)
    • Added MediaCaster boolean property liverepeaterRemoveDefaultAppInstance which when set to true will not send the default application instance name to the origin when making a live repeater connection
    • Added RTPSession elapse timer API:
      • ElapsedTimer RTPSession.getElapsedTime()
      • String RTPSession.getTimeRunning()
      • double RTPSession.getTimeRunningSeconds()
    • Added following Streams properties to control MPEG-TS playback:
      • mpegtsAlwaysSendZeroPacketLen: Set to true to send zero length for PES length for very high bitrate streams where you do not video frames wrapped in multiple MPEG-TS packets
    • Added code to align Cupertino and San Jose chunks on absolute timecode boundries
    • Added support for framerate to H.264 SPS decoding
    • Added support for framerate to onMetadata generation fo rH.264 live and video on demand streaming
    • Added support for framerate to SDP generation fo rH.264 live and video on demand streaming
    • Added following Streams properties to control MPEG-TS playback:
      • mpegtsPCRBufferTime: Time in milliseconds the PCR clock trails the PTS and DTS clock of the audio and video PIDs
      • mpegtsPacketsPerBlock: Number of 188 TS packets per-UDP block
      • mpegtsAudioGroupCount: Number of audio packet per-TS block
      • mpegtsFlushEveryPacket: If true, Non-complete UDP packets will be sent after each new audio or video packet
      • mpegtsDebugAACTimecodes: Debug the more accurate calculation for converting millisecond time values to 90MHz clock for AAC packets
    • Added support for H.264 RTP Annex B streams (to turn on support set boolean RTP/Properties property rfc3984H264DePacketizerIsAnnexB to true)
    • Improved H.264 RTSP/RTP RFC 3984 packetizer to conform to specification
    • Improved Cupertino, San Jose, and Smooth streaming HTTP adapter to use the server port as default when calculating the host and port from the HTTP header
    • Improved Cupertino H.264 and AAC profile and level logging to be more accurate for todays devices
    • Improved Smooth Streaming, Cupertino streaming and San Jose streaming to properly propogate query paramters to media URLs (with the exception of the San Jose media URL which is not possible due to the way manifest.f4m files are handled)
    • Improved error message that is logged when module class can't be loaded
    • Improved Cupertino streaming logging when 403 HTTP response is sent
    • Improved MP4 file writing code so that 64-bit atom structures are only used when needed (duration is greater then 32-bits)
    • Improved exception handling of RTPStream.shutdown
    • Improved parsing of SDP profile-level-id
    • Improved Smooth Streaming parser to make it handle case change in the media chunk URLS
    • Improved RTSP/RTP RTP-Info generation to use full track URL
    • Improved PlaylistPlayer to only send NetStream.Play.Stop and NetStream.Play.Complete if play has truely started
    • Improved Cupertino streaming AES-128 encryption URL generation to properly URL encode stream name
    • Improved San Jose streaming manifest.f4m generation to properly use kilo-bits-per-second bitrate values
    • Improved RTCPEventHandlerGeneric to use last audio and last video timecodes when sending onSDES packets
    • Improved MPEG-TS generation code to properly mark keyframes with random_access_indicator
    • Changed HTTP response header to always return Content-Length even if zero
    • Changed IMediaStream.send and IMediaStream.sendDirect to use different mechanism to determine when to send AMF3 data
    • Changed SHOUTcast/Icecast User-Agent to WowzaMediaServer to be compatible with latest release of SHOUTcast server
    • Changed Smooth Streaming cache control header for the Manifest to "Cache-Control: no-cache,no-store"
    • Changed RTP max packet size to 1400-[rtp-headersize=12]-[UDP-overhead=28]
    • Changed internal FlashCom version to 3.5.5
    • Fixed Cupertino streaming, added comma between video and audio codecs in CODECS= list when doing Cupertino streaming
    • Fixed San Jose play aliases problem, play alias was not being resolved when using SMIL files
    • Fixed RTSP problem with URI not being set properly in RTPSession data
    • Fixed RTSP re-streaming digest authentication problem
    • Fixed small problem with San Jose live streaming ABST data (it now conforms to the Adobe specification)
    • Fixed logging context issue with stream stop and destroy event for all forms of HTTP streaming
    • Fixed San Jose streaming video on demand streaming problem where ABST data was using stop timecode rather than start timecode
    • Fixed small internal HTTP Content-Length header problem
    • Fixed problem with MediaCasters stream monitoring when there is a connection attempt to a non-existant URL/IP address. Effected all MediaCaster types.
    • Fixed code that extracts the RTPSession.getServerIp to use proper IP address
    • Fixed cupertino streaming problem with liverepeater which was causing IMediaStream to be create many times if stream did not exist on origin
    • Fixed MP4 file writing problem with MDHD header being 2-bytes too long
    • Fixed problem with RTP/MPEG-TS frame and display size propogation
    • Fixed problem with San Jose live streaming with first ABST request returning a full fragment list (should return a partial list)
    • Fixed RTSP/RTP BASIC authentication issue
    • Fixed problem with video on demand video/audio synchronization during seek when using enhanced seek
    • Fixed Smooth Streaming Manifest generation code to properly set quality index for multi-bitrate streaming
    • Fixed problem with Cupertino audio-only stream when AES-128 encrypted
    • Fixed problem with RTP streaming byte rate accounting, bytes out where being treated as bytes in