流媒体技术世界——分享技术,增值服务
2016年6月23日发布新版本Wowza Streaming Engine 4.5.0
新版本通知: Wowza Media System LLC公司于2016年6月23日发布Wowza Streaming Engine™ 4.5.0 build 18676。

注意:关于Wowza Streaming Engine 软件的升级步骤,请参考如何对Wowza Streaming Engine 进行升级.

内容大纲



Wowza Streaming Engine 4.5.0版本的新功能

Wowza Streaming Engine 4.5.0版本的所有更新细节

Wowza Streaming Engine 4.5.0版本的新功能



1、新的 Stream Target 目的地址和推送能力


新的目的地址: Facebook、SHOUTcast和Icecast


在Wowza Streaming Engine中的Stream Targets功能,可以将直播流推送到CDN、其它流媒体服务器、流服务系统。 这些系统可以对外分发您的直播流,使得可以支持更大规模的并发用户访问。 Wowza Streaming Engine 4.5.0 新的推送目的地址包括Facebook和电台服务的SHOUTcast 以及 Icecast 服务器。要了解更多,请参考如何推送到Facebook Live以及如何推送到SHOUTcast 和 Icecast

Akamai: Apple HLS ingest and egress over HTTPS


在Akamai HD 网络上,你可以配置一个接入点/上传点(endpoint),通过HTTS将内容上传上去。Wowza Streaming Engine 4.5.0 有一个针对Apple HLS 内容上传到新参数。 你可以利用这个参数通过HTTPS协议将Apple HLS 流发送给Akamai HD 网络。 你还可以配置一个参数,用来设置将Apple HLS playlist and chunks are delivered to players over HTTPS. 要了解更多,请参考如何将流传送给Akamai HD 网络

将Apple HLS 传送到通用的流服务器


Wowza Streaming Engine 4.5.0 也增加了一个能力,即可以创建一个通用的流目的地,由Wowza Streaming Engine将Apple HLS流传送给它。

这个功能是面向具有以下需求的开发者:

  • 利用任何通信协议将HLS流传送到你期望的任何目的地的URL路径上。
  • 利用Java API来自定义m3u8播放索引。

要了解更多,请参考如何将Apple HLS 流传送到通用的流服务器上?

2、与更多Wowza合作伙伴的产品进行了集成


Wowza Streaming Engine 软件和更多Wowza合作伙伴的产品做了集成,可以简化直播流的发布。在Wowza Streaming Engine Manager管理界面的直播流应用的Sources (Live)功能可以让你用一个URL来对众多流行的编码器、摄像机进行参数编码参数设置。

Wowza Streaming Engine 4.5.0 在它的已经完成集成的编码器、摄像机清单中又添加了Panasonic camcorder(一款摄像机) 以及 PTZ 相机。要了解更多,请参考下面的文章:


这里有一个Wowza Streaming Engine已经完成集成的编码器和摄像机品牌型号清单:Wowza和合作伙伴

3、新的Media Cache source


Wowza Streaming Engine中的Media Cache是一个媒体文件读取缓存机制,可以扩展VOD点播的流服务能力。在这次的新版本中,我们又增加了更多的灵活性,现在可以将Google Cloud Storage 作为一个 media cache source。 你可以在Wowza Streaming Engine Manager管理界面中进行配置,从与Google Cloud service账户绑定的Bucket中拉取媒体文件。要了解更多,请参考如何用Wowza Streaming Engine的MediaCache技术扩展VOD系统的规模?.

4、MPEG-DASH流支持WebM格式


Wowza Streaming Engine 4.5.0 支持WebM文件格式和编码格式。WebM 流采用的视频编码格式为VP8 或 VP9,采用的音频格式是开源的Vorbis 和 Opus。 Wowza Streaming Engine中的直播应用可以注入WebM格式的流,或者你可以将H.264编码的流转码为WebM格式。 要了解更多,请参考如何将直播流视频转码为webm格式?

注意:WebM 文件格式和VP8、VP9编码格式在之前的版本中已经支持了,但那是技术预览版,在目前的4.5.0版本中已经成熟,因此,我们建议你将Wowza Streaming Engine更新到最新版本,以得到最佳的体验。

5、WebSocket server


WebSocket是一个浏览器和Web服务器之间的双向通信(全双工)协议。大部分较新版本浏览器都支持WebSocket,通常它可以用于跟node.js进行通信。

你可以在Wowza Streaming Engine 4.5.0中用一个HTTP Provider 来承载WebSocket 会话(Session)。要了解更多,请参考How to create a WebSocket server.

6、SNMP server


Wowza Streaming Engine 4.5.0 添加了对SNMP的支持(SNMPv2c),它是一个网络管理协议,你可以用它收集关于Wowza Streaming Engine 的各种配置和状态信息。

你可以将Wowza Streaming Engin 添加到你的SNMP管理网络中,利用它的管理系统来监控这些服务器。要了解更多,请参考How to use SNMP in Wowza Streaming Engine

7、对MPEG-TS输入流进行监控、解包的API


MPEG-TS 输入流可以承载多种数据,包括音频、视频、字幕、标签(SCTE-35, SCTE-104)、 key length value (KLV)等等。 每一路流可以用PID来标识。Wowza Streaming Engine 4.5.0 提供了API,可以用来监听注入的MPEG-TS流信息。 关于代码例子,请参考How to monitor MPEG-TS ingestion to process additional data streams show how to add an MPEG-TS ingestion listener API and PID monitor API to your media server to extract additional stream data and implement a built-in monitor for SCTE-35 markers and KLV data. Listening to other types of MPEG-TS data is also possible using these APIs.

8、LATM encapsulation


在Wowza Streaming Engine 4.5.0版本中,我们增加了对Low Overhead Audio Transport Multiplex (LATM)封装格式的AAC over MPEG-2 TS的支持。


Wowza Streaming Engine 4.5.0版本的所有更新细节



Wowza Streaming Engine Manager


  • Fixed multicast in/out interface address assignments in the VHost configuration section of the manager
  • Fixed application creation in the manager so advanced options are immediately available
  • Removed httpRandomizedMediaName property from VOD HTTP Origin application in the manager
  • Improved stream recording crontab validation in the manager
  • Fixed disabling nDVR configuration in the manager
  • Fixed null pointer when playing content in the manager's MPEG-DASH test player


Stream Targets (Push Publishing)


  • Fixed Stream Targets page to eliminate unintended page refreshes
  • Fixed Stream Targets bug where all enabled stream targets show an Active status when any stream target is active
  • Fixed Wowza Streaming Cloud Stream Target so that audio-only streams can be pushed successfully
  • Added support in Stream Targets to push Apple HLS (cupertino) streams to Akamai over SSL/HTTPS (only controllable through application properties)
  • Added push publishing map file (PushPublishMap.txt) property "sendSSL" to control use of SSL when POSTing Apple HLS (cupertino) streams to Akamai (valid values are "true" and "false", default is false). Use of this option requires Java 1.7 or newer
  • Added push publishing map file (PushPublishMap.txt) property "playbackSSL" to control use of SSL (HTTP vs. HTTPS) in the playlist and chunklist for Apple HLS (cupertino) streams pushed to Akamai (valid values are "true" and "false", default is false (HTTP)). Use of this option requires Java 1.7 or newer
  • Fixed push publishing Akamai HLS ABR rendition ordering to maintain order from map file
  • Fixed problem with RTMP push publishing that caused an exception when connection was refused and result object included "application" item with description of the reason for failure
  • Removed incorrect display of application-level buttons when editing a specific stream target in Wowza Streaming Engine Manager
  • Added Shoutcast1, Shoutcast2, and Icecast2 Stream Targets for audio-only push publishing
  • Added support to enable users to develop custom Apple HLS stream target destinations using a generic stream target base class
  • Added support for Facebook stream target destination


Transcoder


  • Fixed HEVC decoder crash on Linux by setting LD_PRELOAD variable in startup script
  • Fixed Quick Sync accelerated H.264 decoder to filter out filler NAL units that caused decoding artifacts
  • Added GPUID selection to transcoding decode options
  • Fixed Transcoder crash when SkipFrameCount is set higher than the source stream framerate. Destination framerate now set to 1 when this happens
  • Fixed Transcoder log statement formatting so the comment data has proper JSON format (field names double-quoted)
  • Improved MP3 decoder so that it properly decodes packets with more than one MP3 frame


Live Stream Recording


  • Added IP whitelisting/blacklisting for LiveStreamRecord HTTP Provider
  • Fixed Live-to-VOD clip extraction code that caused the conversion start time to be overwritten with the default value. This caused all conversions to start at the beginning of the DVR store
  • Added dvrConverterDebugConversions query parameter to nDVR converter REST API to allow debug to be enabled per conversion request
  • Fixed issue with some live-record recordings being out of lip sync (adjusted codec config timecodes to match first packet in list and fixed timecode of first data packet to match trimmed audio/video)
  • Improved nDVR conversion performance when selecting segments from large stores
  • Fixed LiveStreamRecord HTTP whitelist/blacklist logic when both are empty
  • Added splitOnTcDiscontinuity parameter to the streamrecorders REST API endpoint
  • Fixed LiveStreamRecord when configured for "append" and two streams with different codecs are published sequentially. This caused a cast exception to be thrown when closing the MP4 file and resulted in a corrupt file. When the file was subsequently reopened for append, an infinite loop prevented all future requests to start/stop recording and any application failed to be processed. Now if the incoming stream doesn't have the same codecs as the MP4 file being appended to, appending is disabled and the default version scheme (date/time stamp) is used such that recorded content isn't lost


nDVR


  • Fixed nDVR packetizers to shut down correctly when an application instance stops
  • Fixed nDVR AES manifest to include the URI prefix in the X-KEY-METHOD header
  • Improved DVR ABR alignment algorithm to better handle resumption of alignment calculation after large gaps when feeds come in at different times
  • Improved DVR ABR alignment algorithm to ignore small gaps that don't align with alternative chunks
  • Fixed DVR manifest reader to use property "dvrTextReaderClass" to dynamically load class to read DVR manifest files
  • Enhanced IDvrFileWriter init() to include the IDvrStreamStore to provide more context to custom writers
  • Added option to use SAX parser for DVR manifest parsing, controlled by DVR property "dvrUseSAXParser" (Boolean, default is false), which should improve performance


Closed Captions


  • Added closed-caption options for VOD/Live HTTP Origin applications in Wowza Streaming Engine Manager


Media Cache


  • Added support for Google Cloud Storage to Media Cache
  • Added debug for MediaCacheItemFileImpl to see file operations in progress. Property MediaCacheSource/debugLog or MediaCache/debugLog enables this output


HTTP Streaming (Apple HLS - Cupertino)


  • Turned off Apple HLS cupertinoAutoAdjustDurationIfOutOfBounds system by default (also improved logging when feature is on)
  • Disabled EXT-X-ALLOW-CACHE header by default for Apple HLS streams; mediastreamvalidator warns this is a deprecated playlist header item
  • Fixed Apple HLS repeater so that custom chunk IDs are migrated from origin to edge correctly
  • Added API getChunkMap() to LiveStreamPacketizerCupertinoChunk. Returns the chunk's byte layout to help identify the media data that makes up the chunk:
    • CupertinoChunkMap LiveStreamPacketizerCupertinoChunk.getChunkMap()
  • Added API getDataPackets() to LiveStreamPacketizerCupertinoChunk. Returns a list of all the data AMFPackets that occurred during the chunk duration (can be used to get onTextData, onCUE (SCTE-35), or onKLV event data):
    • List<AMFPacket> LiveStreamPacketizerCupertinoChunk.getDataPackets()
  • Enhanced Apple HLS DVR playlists to insert discontinuity marker when alternate chunks are used during stream gaps:
    • Added HTTPStreamer/Properties Boolean property "dvrCupertinoPlaylistDiscontinuityAtAlternates" to control the behavior (default is true)
  • Added HTTPStreamer/Properties Boolean property "cupertinoAppendQueryParamsToEncUrl" to control if query parameters are appended to encryption URL for Apple HLS streaming (default is true, set to false for Fairplay)
  • Added key file Boolean item "cupertinostreaming-aes128-iv-include-in-chunklist" and encryption API to control if IV value is included in chunklist when doing Apple HLS encryption (default is true, set to false for Fairplay):
    • boolean CupertinoEncInfo.isEncIVBytesInChunklist()
    • CupertinoEncInfo.setEncIVBytesInChunklist(boolean encIVBytesInChunklist)


HTTP Streaming (MPEG-DASH)


  • Fixed MPEG-DASH playback issue on Chrome/OS X by adding sample flags to MP4 fragment data to make key frames (trun box)
  • Fixed MPEG-DASH on-demand streaming with CENC issue that caused an exception and failure on segment requests
  • Fixed MPEG-DASH streaming issue related to incorrect identification of all video frames as sync/i-frames in trun boxes
  • Fixed MPEG DASH SMIL/AMLST request handling for non-repeater-edge server requests. When all streams are unavailable, Wowza Streaming Engine doesn't attempt internal retries, since they create a lot of DASH HTTP sessions that can cause heap issues when many clients try to connect
  • Fixed MPEG DASH SMIL/AMLST request handling for repeater-edge server requests so that internal retries re-use the DASH HTTP session created on the initial try for all ensuing tries, avoiding creation of numerous sessions
  • Added support for <BaseURL> tag in on-demand and live MPEG-DASH manifests
  • Added HTTPStreamer String property "mpegdashChunkHostDomain", which modifies the domain name indicated in the MPD <BaseURL> tag. Allows content files to be located on a different server than the MPD manifest file
  • Changed MPEG-DASH RepresentationId values to include an indication of the rendition bitrate (for example: "p0va0r3500000", which is a 3500000 bps video rendition)
  • Added HTTPStreamer String property "mpegdashMinBufferTime", which can be used to modify the minBufferTime attribute in DASH MPDs
  • Fixed MPEG-DASH null pointer for some audio segment indexing
  • Added support for the repeat count attribute (@r) within the SegmentTimeline.S elements in MPEG-DASH on-demand streaming MPDs. This greatly reduces the size of MPDs for large assets with many contiguous segments of the same duration
  • Fixed MPEG-DASH null pointer when in HTTP Origin mode
  • Added support for "role", "audioRole", and "videoRole" params in SMIL files used for MPEG-DASH streaming to allow better separation of renditions into appropriate AdaptionSets
  • Added API to support custom fragment ID and time offset for MPEG-DASH live streaming packetizer:
    • New interface IHTTPStreamerMPEGDashLiveStreamPacketizerChunkIdHandler that must be implemented to provide chunkId and timecode for the stream. For it to work with many players, chunkId must be set as follows: chunkId = 1 + (timecode/liveStreamPacketizer.getChunkDurationTarget())
    • To set custom chunkId handler, add mpegdashChunkIdHandlerClass property to LiveStreamPacketizer/Properties container in Application.xml and set it to full path to your IHTTPStreamerMPEGDashLiveStreamPacketizerChunkIdHandler implementation
  • Fixed a potential synchronization issue with live stream repeater for MPEG-DASH
  • Added HTTPStreamer/Properties Boolean property "mpegdashAdjustCTTSForFirstKeyFrameToZero" to adjust CTTS values to zero (default is false). Some browsers can't play on-demand MPEG-DASH assets where CTTS of first frame isn't zero
  • Fixed serialization and deserialization of AMFPacket used for MPEG-DASH live-repeater, which caused some repeated streams to fail
  • Updated HTTPProviderMediaList so that it formats the videoCodecId string for AVC streams per RFC6381 Section 3.2 to meet MPEG-DASH requirements


HTTP Streaming (Smooth)


  • Fixed Smooth Manifest so that MaxWidth,MaxHeight,DisplayWidth,DisplayHeight show the highest values when multiple renditions are available
  • Fixed Smooth Streaming adapter for live streams so that 404 HTTP status is returned for fragment requests that aren't in current readahead list rather than waiting for several seconds to return 404
  • Added HTTPStreamers/Properties Boolean property "smoothOnlyWaitIfReadAheadFragment". If true, 404 is returned for fragment requests that aren't in the readahead list; if false, 404 is returned if request is for previously deleted fragment (maintain a list of 2000 fragments, default is true)
  • Added HTTPStreamers/Properties integer property "smoothFragmentNotFoundStatus" to control HTTP status returned if fragment isn't found (default is 404)


HTTP Streaming (General)


  • Fixed OPTIONS request to provide CORS headers when an invalid application/instance is requested


RTSP/RTP Streaming


  • Updated VP9 RTP depacketizer and packetizer to latest specification version (draft-ietf-payload-vp9-01)
  • Fixed UDP port allocation/deallocation issue with RTSP/RTP streaming
  • Removed errant RTSP/RTP warning message: "RTCPHandler.handleMessage : socket address is null or not RTCP packet"
  • Added .stream file property for MediaCaster multicast RTSP re-streaming to specify the audio and video port to use when the server returns zero for the port number in the DESCRIBE response (rtspMulticastServerPortAudio and rtspMulticastServerPortVideo, both the specified port number and the next port number are used for each track [RTP and RTCP], default is zero)


On-Demand Streaming (VOD)


  • Fixed the bitrate calculation for MP3 files that have ID3 tags in them (off by a factor 5--too large)
  • Increased default VOD readahead cache size from 64K to 256K for better performance on higher bitrate files


MPEG-TS Ingestion


  • Added support for LATM AAC audio ingestion over MPEG-TS
  • Added listener interface IRTPDePacketizerMPEGTSNotify to MPEG-TS depacketizer to enable callbacks during live TS processing:
    • Added RTP/Properties String property "rtpDePacketizerMPEGTSListenerClass", set to full path of class that implements IRTPDePacketizerMPEGTSNotify to enabled (pipe | delimited for multiple class definitions)
  • IRTPDePacketizerMPEGTSNotify definition, best to extend RTPDePacketizerMPEGTSNotifyBase and override needed callbacks:
    public void onInit(RTPDePacketizerMPEGTS rtDePacketizerMPEGTS, RTPContext rtpContext, RTPDePacketizerItem rtpDePacketizerItem);
    public void onStartup(RTPDePacketizerMPEGTS rtDePacketizerMPEGTS, RTPTrack rtpTrack);
    public void onShutdown(RTPDePacketizerMPEGTS rtDePacketizerMPEGTS, RTPTrack rtpTrack);
    public void onPAT(RTPDePacketizerMPEGTS rtDePacketizerMPEGTS, ProgramAssociationTable newPAT);
    public void onPMT(RTPDePacketizerMPEGTS rtDePacketizerMPEGTS, ProgramMapTable newPMT);
    public void onVideoStart(RTPDePacketizerMPEGTS rtDePacketizerMPEGTS);
    public void onAudioStart(RTPDePacketizerMPEGTS rtDePacketizerMPEGTS);
    public void onTimecodeReady(RTPDePacketizerMPEGTS rtDePacketizerMPEGTS);
  • Added RTPDePacketizerMPEGTS API to add and remove listeners:
    public void addListener(IRTPDePacketizerMPEGTSNotify listener)
    public boolean removeListener(IRTPDePacketizerMPEGTSNotify listener)
  • Added MPEG-TS depacketizer API for monitoring incoming data for a particular PID. This might be used to monitor SCTE-35 ad markers, KLV metadata, closed captioning data, ID3 metadata tags, and so on:
    • Three different callback interfaces based on the PID data format:
      IMPEG2UserMonitorRawNotify: Get called back for each individual 188 TS packet for a given PID
      IMPEG2UserMonitorPESNotify: Get called back with assembled Packetized Elementary Stream (PES) data
      IMPEG2UserMonitorSectionNotify: Get called back with assembled section table data (SCTE-35 and SCTE-104 table data...)
    • RTPDePacketizerMPEGTS API for adding and removing monitors:
      public void clearPIDMonitorMap()
      public Map<Integer, PIDMonitorHolder> getPIDMonitorMap()
      public boolean pidMonitorEmpty()
      public PIDMonitorHolder getPIDMonitor(int PID)
      public void putPIDMonitorMap(int PID, IMPEG2UserMonitorPESNotify monitor)
      public void putPIDMonitorMap(int PID, IMPEG2UserMonitorSectionNotify monitor)
      public void putPIDMonitorMap(int PID, IMPEG2UserMonitorRawNotify monitor)
      public PIDMonitorHolder removePIDMonitorMap(int PID)
      public boolean containsPIDMonitorMap(int PID)
    • A given PID can only be monitored once. Any internal monitoring such as a video or audio PID for ingestion trumps any user-added PID monitors
  • 添加了RTPDePacketizerMPEGTS API:
    public int getVideoPID()
    public int getAudioPID()
    public RTPTrack getAudioRTPTrack()
    public RTPTrack getVideoRTPTrack()
    public int getAudioCodec()
    public RolloverLong getAudioTC()
    public int getAudioCodecStreamRate()
    public int getAudioCodecChannels()
    public int getVideoCodec()
    public RolloverLong getVideoTC()
    public RolloverLong getVideoPTS()
    public RolloverLong getVideoDTS()
    public RolloverLong getDataTC()
  • Added default MPEG-TS PID monitor implementation for ad marker (SCTE-35) ingestion (com.wowza.wms.rtp.depacketizer.RTPDePacketizerMPEGTSMonitorCUE)
  • Added default MPEG-TS KLV monitor implementation for key length value (KLV) data ingestion (com.wowza.wms.rtp.depacketizer.RTPDePacketizerMPEGTSMonitorKLV)


Security


  • Added support for multiple SSL certificates (Java KeyStores) per HostPort (TLS Server Name Identification (SNI) is required)
  • Fixed IP whitelisting/blacklisting for RTSP/RTMP authentication
  • Added HTTPProvider/Properties property "passwordFile" to allow alternative username/password file to be used


General/Other


  • Added support for SNMP. Supported objects are: Server, VHost, Application, ApplicationInstance, Stream, and Client
  • Added support for WebSockets as part of an HTTPProvider
  • Improved live stream receiver to block against null packets
  • Improved H.264 PPS decoding to properly calculate display frame size based on aspect ratio (if calculation leads to width that's within round-off error, we use the original frame width)


REST API


  • Fixed incorrect logging for OutgoingStreamConfig REST API call
  • Added REST API endpoints to list and purge items from MediaCache
  • Fixed REST API JSON error content type to be consistent with non-error response
  • Updated applications/live/instances/_definst_/streamrecorders REST API endpoint so the option parameter can also be the single keywords "append", "overwrite", or "version"




匿名用户
评论

我们的地址


北京市朝阳区管庄西里建基商务楼423室


邮编:100024

关于我们


北京联方信科信息技术有限责任公司


官网:www.ttstream.com

联系我们


王经理:phone


柳经理:phone

京ICP备14033868号-2