Wowza支持在playlist.m3u8文件中加入CODECS 和 RESOLUTION 参数。 这些元数据用于让终端基于自己的能力选择合适流来播放,例如一个很老的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中添加width、height 以及<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的信息。