• Wowza Media Server 3.0.4 Release Notes

    Wowza Media Server 3.0.4 Release Notes

    Wowza Media Server 3.0.4 build1127 (19 January 2012)

    Detail list of changes: (since: 3.0.3)
    • General
      • Added Streams/Properties fixH264InjectCodecConfig which when set to true will inject AUD, SPS and PPS NAL units into H.264 frames
      • Improved H.264 packet debugging
      • Improved server startup when Server.license is missing, empty or invalid license key if starting as system service by shutting down server rather than interactively prompting for the license key (if standalone we still prompt for license key)
      • Fixed problem with timing of FMLE version detection
      • Fixed TCP request decoder to properly deal with full HTTP path in HTTP header
      • Exposed underlying RTMPResponseMessage in HTTPResponse
      • Added Silverlight Multicast Authorizer
      • Added more connection count information to server info HTTPProvider
      • Updated MP4 file recording to enable turning on/off data recording and onMetaData recording
        • Streams Property boolean propertymp4WriterRecordData to turn on/off data recording (true by default)
        • Streams Property boolean mp4WriterRecordOnMetaData to turn on/off recording of onMetaData event (false by default)

      • Added support in stream Publisher class for a stream name with a prefix
      • Added API to set Stream class start and duration resolution from seconds to milliseconds Stream.setTimesInMilliseconds(boolean timesInMilliseconds)
      • Added API to remove Stream class items by index Stream.removeFromPlaylist(int index)
      • Fixed problem with removing times from Stream class where indexes where getting incorrectly updated
      • Improved connection counting code
      • Added startOnPreviousKeyFrame property to PublishingProviderLive to make transition to live streams smoother
      • Added startLiveOnPreviousKeyFrame property to Stream class to make transitions to live streams smoother
      • Fixed NPE caused by MP4 files with empty text tracks
      • Added BuyDRM support
      • Avoid possible memory leak with Java 7 regarding GC JMX notifications
      • Fixed HTTPProviderMediaList so that it returns width in RSS feed if only width specified in SMIL file
      • Modified applicationInstance startup so that is does not try to validate storageDir if mounted drive
      • Fixed problem with stream publisher not notifying with unpublish event
      • Added system locale log statements to the Wowza media server startup
      • Fixed problem with RTMP adaptive streaming where on switch MediaCaster registered player name was not being updated properly
      • Added try/catch in client shutdown code
      • Updated listeners collections (app, appInstance, vhost, server, mediastream) to use HashSet rather than ArrayList to avoid duplicates
      • Updated internal onWriteComplete to avoid duplicate calls
      • Enhanced HTTPServerInfoXML to add support for HTTPSessions and RTPSessions
      • Enhanced HTTPServerInfoXML to add more information about bytes transferred and Io timing
      • Improved code to better handle negative CTTS values (DST to PTS offsets)
      • Added check to ensure codec config packet is H264 before trying to decode it as such
      • Fixed OSX Lion acceleration problem with VOD playback
      • Enhanced debugger socket configuration
      • Fixed problem with AMF data in an MP4 file that caused seek problem
      • Added support for onMetaData events in MP4 files
      • Fixed problem with audio only HTTP streams not getting data packets
      • Added HTTPProvider2Base (with 2 P)
      • Fixed MP4 seek divide by zero error caused by single AMF data frame
      • Added log warning if verimatrix stream mapper file does not exist
      • Updated SMIL parser to properly us MP4 prefix as the default
      • Fixed error "Error creating object name javax.management.MalformedObjectNameException: Invalid character ':' in value part of property"
      • Improved audio and video codec logging to normalize information logged
      • Fixed System.exit problem
      • Fixed RTMPT processing to handle out of order requests (seems to be a problem on OSX)
      • Fixed problem with video on demand seek not working when using RTMPT or RTMPTE

    • HTTP Streaming
      • Fixed problem with sanjose streaming where multiple session were generated on request of manifest if first chunk was not complete
      • Added support in san jose streaming to encode query parameters in the media URL as part of the file name
      • Added EXT-X-VERSION:2 to all Apple HLS (cupertino) playlists
      • Updated SanJose streaming to always use full ABST data
      • Added method IHTTPStreamerCupertinoIndex.getStreamBitrates()
      • Fixed MediaList HTTPProvider to correctly add width and height values in RSS and XML feed
      • Updated crossdomain.xml and clientaccesspolicy.xml handlers to close TCP connection after response
      • Fixed problem with IHTTPStreamerSession.setPlayStart/setPlayDuration not working for iOS streaming when called from onHTTPSessionCreate
      • Fixed liverepeater reset problem with HTTP streaming protocols not properly setting liveedge flag on reset
      • Improved liverepeater logging when streaming HTTP protocols
      • Fixed problem with cupertino stream and target duration being too long when using wowzaplaystart
      • Added HTTPProvider com.wowza.wms.http.HTTPProviderMediaList to main VHost ports. This enables the following URLs:

      • Fixed cuperino VOD streaming to enable spaces in stream names in SMIL files
      • Updated example to fix OSMF buffering issue
        • SimpleVideoStreaming
        • LiveVideoStreaming
        • LiveDvrStreaming

      • Improved cupertino vod logging code so that audio and video codec information is logged earlier in the process
      • Added "keyframes" to Smooth Streaming parsing code. Will handle keyframe requests at a later time

    • RTSP/RTP and MPEG-TS streaming
      • Fixed problem where HTTPStreamerSession was not set properly in IMediaStream
      • Fixed problems with RTCP RR packets
      • Added MediaCaster/RTP/RTSP/RTPTransportMode to Application.xml (replaces need for MediaCaster forceInterleave property but property still works and overrides this new setting)
      • Added support for RTP H.264 (rfc 3984) packetization-mode=2
      • Modified RTP ingestion to properly map media type 0 with no rtpmap defined to PCMU/8000/1
      • Changed Speex output RTP playload id to 0x60
      • Added MediaCaster properties rtspDefaultAudioRTPMap and rtspDefaultVideoRTPMap to enable setting of default rtpmap entry for IP cameras that do not properly include this data in the SDP data (Example: Set rtspDefaultAudioRTPMap to PCMU/8000)
      • Updated MPEG-TS over RTP playload ID from 0x62 to 0x21 per the RTP specification
      • Added support for RTCP Receiver Reports
      • Improved RTP and RTSP/RTP code to make us not dependent on RTP M-bit
      • Improved RTP and RTSP/RTP code to dynamically set waitForEnd based on transports
      • Added MPEG-TS out Streams/Properties to control the audio and video stream_type used (mpegtsOutVideoStreamType and mpegtsOutAudioStreamType)
      • Fixed a few synchronization issues with RTP idle process


    • Transcoder
      • Fixed problem with transcoder CUDA frame rate calculation
      • Fixed problem with transcoder frame count pre-incrementing
      • Updated transcoder Quick Sync support to Intel Media SDK 2012
      • Fixed problem with transcoder H.264 decoder adding SPS and PPS NAL units to all frames and not just keyframes
      • Fixed transcoder crash on Linux when machine has Sandy Bridge processor
      • Added debug log statement for transcoder frame size resolution
      • Fixed transcoder problem when video codec is set to disable it throws may log warnings and errors
      • Improved transcoder transparent overlay performance
      • Fixed transcoder crop mode to properly use source frame rectangle
      • Fixed transcoder letterbox mode to properly set black background with transparent overlays
      • Fixed transcoder source frame crop and sourcerect modes to use property frame rectangle
      • Added codec value Disable to transcoder templates
      • Added audio-only, video-only and audio+video transcoder tracking (internal)
      • Fixed transcoder name group resolution timeout so that at least 10 packets are process before the timer starts
      • Updated documentation regarding requirements for Wowza Transcoder on Windows Server 2003 and 2008
      • Fixed transcoder audio encode start log statement so that is properly displays objectType
      • Improved transcoder session counting
      • Updated to MainConcept SDK version 9.1.0
      • Fixed spelling error in transcoder stream name group log message
      • Improved transcoder to handle liverepeater stream as a source - added close and shutdown actions
      • Improved transcoder logging to log profile, level and objecttype names
      • Fixed a few transcoder methods that were not properly marked as public
      • Updated transcoder logging in a few more places to properly log profile, level and AAC object type
      • Fixed live-record stream type when using transcoder
      • Fixed transcode shutdown so transcoded stream properly call unpublish
      • Fixed transcoder crash with FitMode letterbox
      • Fixed problem with MPEG4 Part 2 frameSize and frameRate calculations

    • nDVR
      • Added nDVR PlayReady support
      • Implemented DVR Multi Bitrate alignment
        • Multiple DVR stores are aligned based on their packet times
        • DVR resolve gaps in streams by deferring to other streams to provide the missing chunk
        • Added property "dvrMbrUseUtcForAlignment" to force DVR MBR alignment to use UTC time
        • Property dvrMbrMinimumPacketTimeGapSize added to control size considered a gap in the stream
        • Added debug logging properties dvrDebugMbrPlayerAdapter, dvrDebugMbrAlignment, and dvrDebugPlaylistRequest
        • Added property dvrDebugMbrAlignmentResolution for logging aligned playlist index to real store and index

      • Implemented playlist requests and playlist request factory.
        • Allows playlist request delegate to be specified via DVR Property "dvrPlaylistRequestDelegate".
        • Allows playlist request to be created using delegate.
        • Provides a sample delegate "com.wowza.wms.dvr.impl.DvrStartDurationPlaylistRequestDelegate" that allows use of URL query params "wowzadvrplayliststart" and "wowzadvrplaylistduration" to specify start/end of playlist.

      • Changed DVR chunk file extension from .ism* to .m4f*
      • Fixed problem where Cupertino DVR didn't start all mbr repeater streams (issue 20654)
      • Fixed issue where residual packets were not flushed from DVR packet buffer upon a stream reset. Was causing warning messages reporting negative chunk durations. Ticket 20645
      • Added DVR debug logging properties "dvrLogValidChunkDetails" and "dvrMaxValidChunksLogged" to log details of valid DVR chunks
      • Fixed problem where Smooth Streaming non-live DVR streaming had a 3016 Invalid media error
      • Fixed problem where dvrPlaylistDurationQueryParameter and dvrPlaylistStartQueryParameter were not being honored properly when parsed from DVR Properties
      • Added DVR property dvrPlaylistDebugRequests which will log playlist request, available DVR playlist and resolved playlist when using DvrStartDurationPlaylistRequestDelegate
      • Fixed case when DVR smil does not exist, San Jose Streamer would go into defer mode and log multiple errors instead of logging a single error
      • Fixed problem where restarting incoming stream would cause DVR to start recording even though DVR recording API had stopped the recording and "startRecordingOnStartup was false" (Ticket 19766/Issue WMS-64)
      • Fixed case where DVR on edge was playing as non-live when in fact the origin was live (Ticket 20021/Issue WMS-63)
      • Separated notions of isRecording() and isLive() in IDvrStreamStore API. On an origin live and recording are equivalent, but on an edge recording is always false but it could be live if the origin is recording
      • Fixed multiple san jose sessions being created when connecting to DVR multi bitrate stream
      • Fixed problem where DVR created "recorded" manifest for multi bitrate streams instead of "dvr" manifest
      • Added "dvrPlaylistEncryptionInfoDelegate" to allow interception of encryption information before it's added to playlist and encoded in DVR chunks
      • Fixed DVR bug where 2 consecutive video keyframes would cause the first to be discarded and a 'handleHolder' warning to be logged
      • Improved DVR audio/video alignment code to minimize how often keyframes get held back
      • Changed DVR property "dvrChunkDurationMinimum" default to 1500 ms
      • Added DVR debug property "dvrLogInvalidChunkDetails", which allows raw packets to be logged when a chunk is ignored as "invalid".
      • Fixed bug where playlist was available one saved chunk too early
      • Changed San Jose DVR to version 2.0 of f4m playlist
      • Added property "dvrSanJosePlaylistVersion" to allow choice between F4m playlist version "1.0" versus "2.0". Default is "2.0"
      • Enhanced San Jose DVR to handle case where DVR recording stops during playback. Change abst data from live to recorded to prevent "Buffering..." when end of recording reached.
      • Fixed bug in Smooth DVR multi-bitrate playlist where audio bitrate was sometimes incorrect, causing playback failure.
      • Updated DVR Strobe example from Strobe 1.5 to 1.6
      • Added DVR property "dvrDebugTossedHolders" to allow debug logging of DVR packet holders that tossed due to alignment or inconsistency issues