多协议、性能稳定、丰富API的流媒体服务器软件
如何向HLS流中添加分辨率和编码信息?
注意: 这些设置在 Wowza Stream Engine 4中是默认启用的。

Wowza支持在playlist.m3u8文件中加入CODECSRESOLUTION 参数。 这些元数据用于让终端基于自己的能力选择合适流来播放,例如一个很老的iPhone 3 只能播放H.264 Baseline Level 3.0 或更低Level的流,但一个iPad 却可以播放H.264 Main level 3.1 或更低level的流。 这个特性可以让你创建包含以上两类格式的多码率流。iPad将会播放更高在质量的流,iPhone 3将播放低质量的流。www.ttstream.com

要对单个流添加这个元数据,你可以在[install-dir]/conf/[application]/Application.xml文件的HTTPStreamer/Properties中添加下面两个参数,

<Property>
	<Name>cupertinoCalculateCodecs</Name>
	<Value>true</Value>
	<Type>Boolean</Type>
</Property>
<Property>
	<Name>cupertinoCalculateResolution</Name>
	<Value>true</Value>
	<Type>Boolean</Type>
</Property>
对于用SMIL文件描述的多个流,请在SMIL中添加widthheight 以及<param name="" value="" valuetype="data"> 语句:
<smil>
	<head>
	</head>
	<body>
		<switch>
			<video src="mp4:myStream1" system-bitrate="340000" width="320" height="240">
				<param name="audioCodecId" value="mp4a.40.2" valuetype="data"/>
				<param name="videoCodecId" value="avc1.66.30" valuetype="data"/>
			</video>
		</switch>
	</body>
</smil>
这里的视频codecId的格式为avc1.[profile].[level] ,其中 [level] 是H.264 码率和帧率大小的Level乘以10,[profile] 是:
  • Baseline: 66
  • Main: 77
  • High: 100


这里的音频codecId的格式为mp4a.40.[objectType] ,其中object type 为:
  • AAC-LC: 2
  • HE-AAC: 5
  • MP3: 34


举例如下:
  • H.264 Baseline Profile level 3.0: avc1.66.30
  • H.264 Main Profile level 3.0: avc1.77.30
  • AAC-LC: mp4a.40.2
  • HE-AAC: mp4a.40.5
  • MP3: mp4a.40.34

Wowza的Log日志中已经做了改进,当收到输入流并开始进行HLS打包时以及对播放终端下发Playlist列表时,会在日志中输出Codecs ID、Width、Height的信息。