多协议、性能稳定、丰富API的流媒体服务器软件
如何在Stream File中为每一个流添加个性化的设置参数?
当你为一个Application进行参数设置时,这些参数会影响每一个.stream文件中的流。因此,如何为每一个流添加个性化的设置参数呢? 这篇文章介绍了如何在.stream文件中添加设置参数,来覆盖Application中的定义。

一个流的(.stream)文件是用来将一个复杂的流地址进行简化用的,例如推送到Wowza服务器的MPEG-TS流和来自IP摄像头的RTSP/RTP流、以及native RTP 流。 例如,如果一个流地址是udp://0.0.0.0:10000,你可以创建一个叫做mycoolevent.stream的文件,在这个流地址设置在这个stream文件中。 然后播放器在使用URL请求播放时,就可以用mycoolevent.stream作为流的名字。
你可以根据如何在Wowza Streaming Engine Manager中创建和使用.stream文件中的介绍创建一个stream文件,用它来re-stream MPEG-TS 流 或者是来自IP摄像头的RTSP/RTP流以及SHOUTcast/Icecast流和native RTP流。 当你创建完成一个stream文件后,你可以按下面的介绍在Wowza Streaming Engine Manager中为每一个流添加个性化设置参数:

  1. Stream Files菜单中,点击你需要配置的stream file的名字。


  2. 点击PropertiesTab页。(注意:访问PropertiesTab页,需要管理员有高级管理权限。 要连接更多关于如何配置访问权限,请参考Manage credentials.) 在Properties Tab页,有两类设置参数: Common (适用于所有类型的流) 和 每一中流类型相关的参数。 下图展示了适用于SHOUTcast-Icecast 流的(http:// URI 类型):例子



  3. 要启用某一个参数,点击Edit按钮,再选择这个参数的Enabled复选框。 这些参数后被启用后,有一个默认的参数值,你可以在Value输入框中改变它们。完成后,你需要点击Save按钮来保存。



  4. 下面的部分,介绍了通用参数和每一类流的特殊参数的说明:



设置参考


注意:所有设置参数都是大小写敏感的。

当你在Wowza Streaming Engine Manager的管理界面配置这些参数时,这些参数和值按JSON格式被写入了.stream文件中,(JSON的介绍)。

你也可以须自己在.stream文件中手工添加JSON数据。 下面是一些JSON格式数据的例子:

  • 如果参数值是字符串,那么需要加双引号引:
    stringSetting: "aValue"

  • 如果参数值是数字,那么可以是十进制数,也可以是16进制数.十进制数不需要加双引号,但16进制数需要加双引号,并要加上0xx的前缀:
    decimalSetting: 3
    hexSetting1: "0x3"
    hexSetting2: "x3"

  • 如果参数值是布尔类型的,参数值为truefalse,且不用加双引号:
    booleanSetting: true
    booleanSetting: false

通用参数

下面的这些参数可以设置在.stream文件中,适用于所有类型的流。



JSON notation
{
	uri:"udp://192.168.1.100:10000",
	streamTimeout:5000,
	reconnectWaitTime:3000
}
参数说明

  • uri:字符串
    输入流的流地址。

  • streamTimeout:整数数值
    如果是非零的数值,那么在Wowza Streaming Engine 监控这个流的时候,如果中断时间大于这个streamTimeout的值,就会重置这个流。要了解更多,请参考RTP Session 参数说明.

  • reconnectWaitTime:整数数值
    尝试重新连接的间歇时间,单位毫秒。



针对MPEG-TS 流 (udp://) 的参数

下面的设置参数是针对MPEG Transport Streams (MPEG-TS)流的。



JSON notation
{
    uri:"udp://192.168.1.100:10000",
    streamTimeout:5000,
    reconnectWaitTime:3000,
    mpegtsAudioPID:15,
    mpegtsVideoPID:16,
    mpegtsProgramID:2,
    mpegtsAudioLanguage:"spa",
    mpegtsAudioBitrate:50000,
    mpegtsVideoBitrate:750000,
    mpegtsAudioIsAligned:true,
    mpegtsVideoIsAligned:false,
    mpegtsAdjustBFrameTimecodes:false,
    mpegtsDropIncompleteVideoFrames:true,
    mpegtsLogIncompleteVideoFrames:true,
    mpegtsMapTimeToSystemTime:false,
    mpegtsMapTimeToSystemTimeWindow:2000,
    mpegtsImportAC3:false
}
		

  • mpegtsAudioPID:整数数值
    TS流中某一个音频声道信号源的PID
    www.ttstream.com 默认值: 默认使用在PMT中发现的第一个音频声道信号源。要了解更多,请参考Ability to select MPEG-TS stream by program ID and audio language as well by PID中的audioPID

  • mpegtsVideoPID: 整数数值
    TS流中某一个视频信号源的PID
    默认值: 默认使用在PMT中发现的第一个视频信号源. 要了解更多,请参考Ability to select MPEG-TS stream by program ID and audio language as well by PID中的videoPID

  • mpegtsProgramID: 整数数值
    TS流中某一套节目的Program ID
    默认值: 默认使用在PMT中发现的第一个套节目信号源.要了解更多,请参考Ability to select MPEG-TS stream by program ID and audio language as well by PID中的programID

  • mpegtsAudioLanguage: 三个字符的字符串
    请参考ISO 639-2 中的语言代码,可以根据它来选择某一种语音的音频声道信号源。
    默认值: 默认使用在PMT中发现的第一个音频声道信号源. 要了解更多,请参考Ability to select MPEG-TS stream by program ID and audio language as well by PID中的audioLanguage

  • mpegtsAudioBitrate: 整数数值
    用于设置音频码率(每秒bit数),配合Wowza Transcoder使用。
    默认值: -1

  • mpegtsVideoBitrate: 整数数值
    用于设置视频码率(每秒bit数),配合Wowza Transcoder使用。
    Default: -1

  • mpegtsAudioIsAligned: Boolean
    一些MPEG-TS 编码器输出音频数据包是没有对齐的(unaligned)。这个参数会让Wowza Streaming Engine正确的管理它们。 要了解更多,请参考Properties to fix audio and video alignment中的audioIsAligned
    默认值: true

  • mpegtsVideoIsAligned: Boolean
    一些MPEG-TS 编码器输出的视频数据包是没有对齐的(unaligned)。这个参数会让Wowza Streaming Engine正确的管理它们。 要了解更多,请参考Properties to fix audio and video alignment中的videoIsAligned
    默认值: true

  • mpegtsAdjustBFrameTimecodes: Boolean
    当MPEG-TS编码器没有为B帧生成时间戳(DTS/PTS),或生成的不正确时,让Wowza Streaming Engine生成这个时间戳。
    默认值: false

  • mpegtsDropIncompleteVideoFrames: Boolean
    当发生丢包时,允许降低帧率。
    默认值: false

  • mpegtsLogIncompleteVideoFrames: Boolean
    当使用mpegtsDropIncompleteVideoFrames降低帧率时,在日志中输出个信息。
    默认值: false

  • mpegtsMapTimeToSystemTime:Boolean
    将DTS/PTS 映射为系统时间。这个参数通常用于多台Wowza服务器的负载均衡配置,时间戳一致后,可以实现平滑切换。
    默认值: false

  • mpegtsMapTimeToSystemTimeWindow: Integer
    Controls the rollover window duration (in milliseconds) around system/PTS/DTS clocks. This is generally used in a parallel origin configuration and ensures that clock rollover is handled identically on all origin servers.
    默认值: 2000

  • mpegtsImportAC3: Boolean
    启用AC-3音频流。它允许Wowza服务器将Mpeg-ts流中的杜比音效Dolby Digital (AC-3) 或 Dolby Digital Plus (Enhanced AC-3)不做任何改变,透传给终端播放器,包括 Apple HTTP Live Streaming (Apple HLS/Cupertino) 以及 MPEG-DASH streaming. 这会让你的用户体验到身临其境般的环绕立体声效果(当然前提是,你的终端播放器需要支持杜比音效解码)。
    默认值: false

注意: 基础的MPEG-TS over udp的输入流配置,请参考How to publish and play a live stream (MPEG-TS based encoder).

针对RTSP 流 (rtsp://) 的参数

下面是针对RTSP协议的参数。



JSON notation
{
    uri:"rtsp://192.168.1.100:10000",
    streamTimeout:5000,
    reconnectWaitTime:3000,
    rtpTransportMode:"udp",
    rtspValidationFrequency:15000,
    rtspFilterUnknownTracks:true,
    rtspStreamAudioTrack:false,
    rtspStreamVideoTrack:true,
    rtpDebugSession:true,    
    rtpIgnoreProfileLevelId:true,
    rtpIgnoreSPropParameterSets:true,
    rtspBindIpAddress:"192.168.1.1",,
    rtspRemoveUserInfo:true,
    rtspSessionTimeout:10000,
    rtspConnectionTimeout:10000
}
		
参数说明

  • rtpTransportMode: String "udp", "interleave" or "tcp", "tunnel" or "http"
    这个参数控制这RTSP协议如何从RTSP源拉视频流。欲知更多,请参考中关于rtpTransportMode参数的说明.
    默认值: "udp"

  • rtspValidationFrequency: Integer
    这个参数约定了Wowza Streaming Engine 每隔多长时间(毫秒)对RTSP连接进行校验。www.ttstream.com欲知更多,请参考关于RTSP摄像头的一个附加参数.
    默认值: 15000

  • rtspFilterUnknownTracks: Boolean
    将Wowza Streaming Engine不能识别的轨道(Track)数据给过滤掉,欲知更多,请参考关于RTSP摄像头的一个附加参数.
    默认值: false

  • rtspStreamAudioTrack: Boolean
    这个参数控制RTSP流中的音频轨道数据,启用(true) 或 禁用(false)。欲知更多,请参考如何从一个RTSP源拉流再对外提供流服务?中关于启用和禁用音频和视频轨道数据部分的描述
    默认值: true

  • rtspStreamVideoTrack: Boolean
    这个参数控制RTSP流中的视频轨道数据,启用(true) 或 禁用(false)。欲知更多,请参考如何从一个RTSP源拉流再对外提供流服务?
    默认值: true

  • rtpDebugSession: Boolean
    启用这个参数,可以在RTP session的log中增加更多的debug信息,由于数据量太大,在正式运行环境,建议你不要启用这个参数,除非你遇到问题需要看日志来调试。欲知更多,请参考How to re-stream video from an IP camera (RTSP-RTP re-streaming)中关于"如何在RTSP日志中增加等多的debug信息“的章节
    默认值: false

  • rtpIgnoreProfileLevelId: Boolean
    禁用对 profile-level-id 的解析 (profile level ID 是从SPS/PPS NAL units中来的)。 欲知更多,请参考How to re-stream video from an IP camera (RTSP-RTP re-streaming)中的"Problematic SDP files" 部分的介绍。
    默认值: false

  • rtpIgnoreSPropParameterSets: Boolean
    如果是true, Wowza Streaming Engine 将忽略Session Description Protocol (SDP) 文件中的sprop-parameter-sets 数据,并采用SPS and PPS packets 中报告的数据(如果能得到这个参数)。 这个设置通常用于摄像头/编码器编码的信息有错误时。
    默认值: false

  • rtspBindIpAddress: String
    设置RTP over UDP传输流数据时,Wowza Streaming Engine 绑定的IP地址。欲知更多,请参考How to set up an application for RTSP/RTP streaming.
    默认: 绑定默认的网卡地址

  • rtspRemoveUserInfo: Boolean
    如果设置为 true, 当向一个rtsp源请求流时,去除URL中的username 和 password 信息。
    默认值: true

  • rtspSessionTimeout: Integer
    设置Wowza Streaming Engine 多长时间发送一次GET_PARAMETER消息,以对rtsp连接进行校验(单位毫秒)。欲知更多,请参考 RTP Session Properties Description.
    默认值: 90000

  • rtspConnectionTimeout: Integer
    设置在建立与RTSP源的连接时的TCP连接超时时间(毫秒)。欲知更多,请参考www.ttstream.com,RTP Session Properties Description.
    默认值: 4000

  • rtspUserHeaders: String (format is "key1:value1|key2:value2")
    在MediaCaster发出RTSP请求中启用自定义的RTSP报头(header)
    注意: 这个设置参数在Wowza Streaming Engine 4.0.6版本中有介绍。