如何配置Http live streaming切片时的相关参数?
转载请注明:文章来自www.wowza.cn
注意: 要访问最新的技术资料,请访问http://www.ttstream.com/wowza/
这篇文章向你介绍了Wowza Stream Engine 4在提供Http Live Streaming服务时对一个直播流切片时的相关参数设置。www.wowza.cn 所有的时间单位为毫秒。将这些属性参数设置在[install-dir]/conf/[application]/Application.xml文件的LiveStreamPacketizer/Properties中就可以实现针对每一个应用分别设置。 (在这里,[application] 是你希望使用这些参数的应用名):

属性参数


注意: 请确认将这些属性添加在Application.xml文件里正确的<Properties>中。在这个文件中有好几个<Properties>
Code:
<Property>
	<Name>cupertinoChunkDurationTarget</Name>
	<Value>10000</Value>
	<Type>Integer</Type>
</Property>
<Property>
	<Name>cupertinoMaxChunkCount</Name>
	<Value>10</Value>
	<Type>Integer</Type>
</Property>
<Property>
	<Name>cupertinoPlaylistChunkCount</Name>
	<Value>3</Value>
	<Type>Integer</Type>
</Property>
<Property>
	<Name>cupertinoRepeaterChunkCount</Name>
	<Value>3</Value>
	<Type>Integer</Type>
</Property>

一些细节


Hls封包的过程其实非常简单。音频和视频流从实时编码器进入Wowza Stream Engine 4之后,Wowza依据时间将它分割为很多小的片段(本文以下称之为切片)。设置cupertinoChunkDurationTarget参数以控制每一个切片的时长大小(毫秒)。当切片被创建后,它们被添加到到一个切片列表中。在这个列表中存储的最大的切片个数由cupertinoMaxChunkCount参数控制。 www.wowza.cn,当一个iOS设备发起流媒体请求时,一个播放列表(playlist)被返回给终端设备,这个播放列表会包含几个最新的切片。在返回的播放列表(playlist)中的切片个数由cupertinoPlaylistChunkCount参数控制。

直播流中继器(live stream repeater)是一个用于在源/边缘(origin/edge)架构下进行直播流传输时由源(origin)向多个边缘系统传送实时流的系统。当边缘服务器第一次向源(origin)请求实时流时,它将之前的切片从源(origin)拉到边缘(edge)后再向iOS终端提供hls流媒体服务。 www.wowza.cncupertinoRepeaterChunkCount参数控制着在初始化连接后从源(origin)向边缘(edge)发送切片的数量。最好的设置是这个值等同或略大于cupertinoPlaylistChunkCount 但略小于cupertinoMaxChunkCount

注意


每一个切片必须从关键帧快开始,因此关键帧的间隔最好是cupertinoChunkDurationTarget参数的因子(能够被整除).例如,如果cupertinoChunkDurationTarget 被设置为10秒,那么关键帧间隔最好被设置为2秒、2.5秒、5秒、或10秒。

要评估需要多少内存来存储一个直播流的切片,可以用下面的公式:
Code:
[total-memory-mb] = ([stream-bitrate-kbps]/([1024-kb-per-mb]*[8-bits-per-byte])) * [cupertinoChunkDurationTarget-seconds] * [cupertinoMaxChunkCount]
例如,一个500kbps的实时流,按上面的默认设置将会消耗下面数量的内存:
Code:
(500/(1024*8)) * 10 * 10 = 6 MB of memory
你可以在HTTPStreamer/Properties中添加下面的属性参数来控制针对点播业务(VOD)的切片大小:
Code:
<Property>
	<Name>cupertinoChunkDurationTarget</Name>
	<Value>10000</Value>
	<Type>Integer</Type>
</Property>