November 18, 2015

Wowza Streaming Engine released


Wowza Streaming Engine build 16210

Changes lists (since 4.3.0 released)

  • Implemented MPEG-DASH WebVTT VOD captions
  • Improved ServerListenerStreamDemoPublisher by adding and modifying the following configuration items:
    • Renamed "repeat" to "playlistRepeat" ("repeat" is also supported) - If true, playlist items are repeated
    • Added "publishDuration" - Time, in seconds, the stream will publish (format: HH:MM:SS.mmm)
    • Added "publishRepeat" - If true, the stream is re-published in a loop after the "publishDuration" time has elapsed ("publishDuration" must be greater than zero, default is false)
    • Added "publishPauseTime" - Time, in seconds, the stream pauses before being republished if "publishRepeat" it set to true (format: HH:MM:SS.mmm, default is 1 second)
  • Added Apple HLS (cupertino) LiveStreamPacketizers/Properties integer property cupertinoMaxTimecodeGap (in milliseconds). If the gap in time between the previous packet and the next packet is greater than this value, the packetizer is reset (default is -1, which disables this mechanism)
  • Fixed Swagger documentation for the application publisher endpoint such that the singular "publisher" field that was presented to the user is now "publisherName" to match the rest of the documentation nomenclature
  • Added new server listener (com.wowza.wms.module.ServerListenerTranscoderPreload) to preload Transcoder libraries on server startup to avoid issues where Transcoder is slow to load on first use
  • Fixed Transcoder issue with B-frame timecodes to avoid negative DTS to PTS offsets
  • Removed extra "Send the stream to the backup entry point at the destination" option from Akamai RTMP stream target Basic tab "view" page
  • Fixed SecureToken hash generation for RTMP when using certain media type prefixes
  • Added User-Agent HTTP header to all HDS and HLS file pushes to Akamai, allowing Wowza Streaming Engine releases to be fully certified with Akamai for RTMP, HLS, and HDS going forward
  • Normalized Akamai HLS and HDS ingest/playback URL construction to correct ingest HDS URL issues and to align HLS and HDS ingest/playback URLs
  • Fixed issue where a PushPublishing output session would not reset correctly when its source stream had intermittent re-connection issues, resulting in orphaned PushPublishing sessions
  • Updated Destination Stream Name derivation for PushPublishing Akamai RTMP targets so that when adding a default bitrate value to the Destination Stream Name (when not properly specified by the user), a calculated or stream metadata-based value for the bitrate is used (if available), instead of the current default value ("200"), when the PushPublishing session starts
  • Improved the live-record recording process to ensure that audio and video are in sync by trimming audio and video from the start of recordings if audio is delayed from video. The following Streams/Properties are available to control the recording process:
    • recordDebugRecordWrites - Turns on debug logging of recording sessions (default is false)
    • recordVersionFile - If true, file versions are created if a previous file with the same name exists (default is true, property name versionFile is also supported)
    • recordWaitForVideoKeyFrame - If true, audio, video, and data are trimmed from the stream until the first keyframe is encountered (default is true)
    • recordUseCalculatedAudioTimecodes - If true, more accurate timecodes are calculated for audio frames (default is true)
    • recordSkipKeyFrameIfNoAudio - If true, and recordWaitForVideoKeyFrame is true, keyframes that don't have audio within tolerance value are skipped (default is true, more aggressive trimming to ensure audio/video synchronization)
    • recordSkipKeyFrameIfNoAudioTolerance - The tolerance value, in milliseconds (ms), for recordSkipKeyFrameIfNoAudio (default is 150 ms)
    • recordSkipKeyFrameIfNoAudioMaxDropTime - The maximum stream duration, in milliseconds, that recordSkipKeyFrameIfNoAudio system will drop (default is 4000 ms)
    • recordMinBufferTime - The time, in milliseconds, the stream is buffered before the first write operation to synchronize the audio and video
    • recordMaxWaitingPackets - The maximum time, in milliseconds, a packet remains in the synchronization buffer before it's flushed
  • Added API to get the incoming framerate of a live stream that's published to the media server. There are two sources of framerate data: measured (IMediaStream.PUBLISH_FRAMERATE_SOURCE_MEASURE) and metadata (IMediaStream.PUBLISH_FRAMERATE_SOURCE_METADATA):
    • int IMediaStream.getPublishFramerateVideo(); // if metadata available, it is returned; if not, measured is returned
    • int IMediaStream.getPublishFramerateAudio(); // if metadata available, it is returned; if not, measured is returned
    • int IMediaStream.getPublishFramerateVideo(int source); // IMediaStream.PUBLISH_FRAMERATE_SOURCE_MEASURE or IMediaStream.PUBLISH_FRAMERATE_SOURCE_METADATA
    • int IMediaStream.getPublishFramerateAudio(int source); // IMediaStream.PUBLISH_FRAMERATE_SOURCE_MEASURE or IMediaStream.PUBLISH_FRAMERATE_SOURCE_METADATA
  • Added API to get the number of audio, video, and data frames received for an incoming live stream:
    • long IMediaStream.getPublishFrameCountVideo();
    • long IMediaStream.getPublishFrameCountAudio();
    • long IMediaStream.getPublishFrameCountData();
  • Added API to get the last 10 video GOP sizes/keyframe intervals received for an incoming live stream (the most recent GOP is first in the list):
    • int[] IMediaStream.getPublishKeyFrameIntervalsVideo();
  • Improved stream ingestion to detect video and audio codecs earlier in the publishing process by inspecting the onMetaData event
  • Improved compatibility of MPEG-DASH live streaming with the Shaka and bitdash players
  • Fixed query parameter support for SMIL file
  • Fixed Live Stream Record segment recording file names to reflect the time zone name instead of an hour offset
  • Added TimedText Boolean property "cupertinoLiveWebVTTAddSpecialEmptyCaption" to control creation of a special empty chunk in live webVTT subtitle chunk (default is true)
  • Added IRTPPacketizerMPEGTSPacketNotify interface to monitor and control outgoing MPEG-TS streams
  • Added Streams/Property string property "mpegtsPacketNotifyClass" which can be set to the full class path of the IRTPPacketizerMPEGTSPacketNotify class that's called back for each AMF packet handled during MPEG-TS playback/output
  • Added the following RTPPacketizerMPEGTS API to enable insertion of ID3 metadata into an MPEG-TS stream:
    • RTPPacketizerMPEGTS.addDataEvent(long timecode, byte[] buffer, int offset, int len) (timecode should be aligned with stream being output, byte[] should be serialization of ID3Frames object - id3Frames.serialize(true, false, ID3Frames.ID3HEADERFLAGS_DEFAULT))
    • RTPPacketizerMPEGTS.setDataPID(int dataPID) (set to RTPPacketizerMPEGTS.DEFAULT_PID_DATA in init method of IRTPPacketizerMPEGTSPacketNotify to turn on ID3 metadata output in MPEG-TS program map)   

To upgrade

cd /usr/local/WowzaStreamingEngine/updates
unzip -d wowza-
cd wowza-
chmod +x *.sh
service WowzaStreamingEngine stop; service WowzaStreamingEngineManager stop;
service WowzaStreamingEngine start; service WowzaStreamingEngineManager start; 


No comments: