多协议、性能稳定、丰富API的流媒体服务器软件
如何根据Wowza服务器日志中的出错信息进行故障排查?
这篇文章包含了wowzamediaserver_access.logwowzamediaserver_error.log中的部分信息、产生这些信息的场景,以及建议的解决方案。

内容





Wowza Media Server 的日志



server    ERROR    500    -    server core failure: java.net.BindException: Address already in use
vhost     WARN    200    _defaultVHost_    Bind failed, try again ([any]:1935): java.net.BindException: Address already in use
		
原因: 通常的原因是这台服务器上已经有另一个Wowza Media Server正在运行。 wowzamediaserver_service.log 记录了安装的信息以及启动信息。 关闭掉所有Wowza Media Server的实例,然后重新启动。Wowza 可以作为一个服务运行,或作为独立模式(standalone mode)运行,或者在Wowza IDE中运行,但是在同一个时间只能运行一个。 要对JMX访问进行配置,请阅读管理和监控(JMX 和 JConsole)


comment    server    ERROR   500    -    Failed to connect: org.apache.mina.common.RuntimeIOException: Failed to get the session[ConnectException: Connection refused].    
comment    server    WARN    200    -    RTPSessionDescriptionDataProviderBasic.getStreamIn  fo: RTSP/RTP re-streaming. Cannot connect to server: rtsp://[wowza-ip-address]/myStream.sdp
		
原因:试图用不正确的凭证/授权去连接一个IP摄像头(被拒绝连接了)。

comment    server    WARN    200    -    RTPPacket.write: Bad packet: Incomplete NAL Units.
		
原因: 大多数是因为丢包。请打开丢包日志记录的功能以验证是否是这个问题。(请阅读如果开启抖动缓存和丢包的日志功能(RTP/MPEG-TS over RTP)?.)


comment server ERROR 500 RTPDePacketizerMPEG4LATM.handleRTPPacket: Bad packet length: 200:105
		
原因: 这暗示着网络连接故障。请试着在你本机或本地局域网来测试相同的流,来排除网络问题。


ERROR    server    comment    HTTPUtils.HTTPRequestToByteArray: java.io.FileNotFoundException: http://[ip-address]/latest/meta-data/product-codes
WARN    server    comment    Server.run: License key specified in [install-dir]/conf/Server.license file is malformed.
ERROR    server    comment    error: java.lang.NullPointerException
ERROR    server    comment    ERROR: Cannot write to license key file:
		
原因: 这个错误可能是由于您使用了错误的授权码(license key)。

ERROR: License key is not valid or license file does not exist and running as a service (exiting)
		
原因: 这个错误是由于使用了永久授权的插件,但没有合法的Wowza服务器永久授权。


server   comment    ERROR   com.wowza.wms.server.LicensingException: Server.license
		
原因: 当使用性能测试工具时,在每一次性能测试脚本运行时,你会看到2个服务器license 错误。这个问题在Wowza的性能测试工具文档中有说明,可以忽略这个错误信息。


ERROR server comment - The Wowza Media Systems Software licensing system has determined that your serial number is not valid. Please validate that your are using the correct serial number. If this problem persists, please visit http://www.wowzamedia.com/subscriptionsupport.php for up to date information.
ERROR server comment - system.exit
		
原因: 这个错误是由于你没有购买合法的license。请联系billing@wowza.com 解决。


comment    server    ERROR    500    -    invoke(onHTTPCupertinoStreamingSessionDestroy): java.lang.NullPointerException: com.ptin.wms.module.AbortSession.onHTTPCupertinoSt  reamingSessionDestroy(EndSession.java:10)
		
原因: 在这个案例中,在用户自定义模块AbortSession的第10行有一个错误。必须由这个模块的开发者来检查这个错误。


Comment  server    WARN    200    Application folder ([install-location]/applications/_defapp_) is missing
		
原因: 这个错误发生在当你连接Wowza Media Server时,Wowza没有找到对应的应用名。


comment    server    WARN    200    -    Application folder ([install-location]/applications/:80) is missing
		
原因: 通常这是由于在使用ffmpeg作为编码器时,它没有正确的发送应用名。


comment    server    INFO    200    -    RTPMediaCaster.create[9936743]    -    -    -    2.469       
comment    server    INFO    200    -    RTPMediaCaster.init[9936743]    -    -    -    2.47       
comment    server    INFO    200    -    RTPMediaCaster.Reconnector[9936743:live/_definst_:live/customer.stream]: start: 1    -    -    -    2.473      
comment    server    INFO    200    -    VHost.startStartupStreams: Stream successfully started [live/_definst_]: flv:live/customer.stream    -    -    -    2.486       
comment    server    ERROR   500    -    Failed to connect: org.apache.mina.common.RuntimeIOException: Failed to get the session[java.net.NoRouteToHostException: No route to host].    -    -    -    5.603   
comment    server    WARN    200    -    RTPSessionDescriptionDataProviderBasic.getStreamIn  fo: RTSP/RTP re-streaming. Cannot connect to server: rtsp://[wowza-ip-address]/customer.mp4    -    -    -    5.618    
comment    server    ERROR   500    -    Failed to connect: org.apache.mina.common.RuntimeIOException: Failed to get the session[java.net.NoRouteToHostException: No route to host].
		
原因: 这个MediaCaster的问题通常是由于一些网络错误引起的。例如SHOUTcast服务器没有启动。在这里我们看见有一个直播流启动了,接下来的警告和错误暗示Wowza Media Server被它依赖的网络连接错误影响。


Application (vod) is not defined
		
原因: 如果是在使用例子播放器时遇到这个错误,并且应用'vod'是正确定义好的,那么可能是有另外一个应用已经占用了Wowza Media Server用的端口。在这种情况下,http://localhost:1935 不会向你期望的那样返回build number 并且在日志中不会有其它记录,因为服务器无法连接。


ERROR server comment RTPSessionDescriptionDataProviderBasicRTSPConnecti  on.connect[wowza-ip-address]:[port-number]: Failed to connect: org.apache.mina.common.RuntimeIOException: Failed to get the session[ConnectException: Connection refused: no further information]. 
WARN server comment LiveMediaStreamReceiver.doWatchdog: streamTimeout: Resetting connection
		
原因: Wowza Media Server无法连接到MediaCaster流。这可能是网络的问题或输入流的问题。例如,摄像头可以被访问,但是拒绝连接。Wowza Media Server 将会继续尝试连接直到流重新可用了。


comment    server    INFO    200    -    RTPUDPTransport.bind[live/_definst_]: 0.0.0.0/0.0.0.0:6000    -    -    -    556.803  
comment    server    INFO    200    -    RTPUDPTransport.bind[live/_definst_]: 0.0.0.0/0.0.0.0:6001    -    -    -    556.803    
comment    server    INFO    200    -    RTPUDPTransport.bind[live/_definst_]: 0.0.0.0/0.0.0.0:6002    -    -    -    556.804    
comment    server    INFO    200    -    RTPUDPTransport.bind[live/_definst_]: 0.0.0.0/0.0.0.0:6003    -    -    -    556.804    
comment    server    INFO    200    -    RTPSessionDescriptionDataProviderBasicRTSPWorker.s  essionStart: PLAY: rtsp://[wowza-ip-address]/myStream.3gp/   
comment    server    INFO    200    -    RTPSessionDescriptionDataProviderBasicRTSPWorker.p  rocessResponse: PLAY: rtsp://[wowza-ip-address]/myStream.3gp/      
comment    server    INFO    200    -    RTPMediaCaster.Reconnector[30149247:live/_definst_:live/myStream.stream]: done: 2    -    -    -    556.805  
comment    server    INFO    200    -    UDPTransport.firstPacket: 0.0.0.0/0.0.0.0:5984    -    -    -    557.044       

-----other log lines removed for clarity -----------------

comment    server    INFO    200    -    RTPMediaCaster.shutdown[30149247:live/_definst_:live/myStream.stream]: live/myStream.stream  
comment    server    INFO    200    -    RTPMediaCaster.disconnect[30149247:live/_definst_:live/ myStream.stream]    -    -    -    853.437  
comment    server    INFO    200    -    RTPMediaCaster.closeRTPSession[30149247:live/_definst_:live/ myStream.stream]    -    -    -    853.437 
comment    server    INFO    200    -    RTPSessionDescriptionDataProviderBasicRTSPWorker.c  lose closeSession    -    -    -    853.437    
comment    server    INFO    200    -    RTPUDPTransport.unbind[live/_definst_]: 0.0.0.0/0.0.0.0:5988    -    -    -    853.438  
comment    server    INFO    200    -    RTPSessionDescriptionDataProviderBasicRTSPWorker.o  nClose    -    -    -    853.438    
comment    server    INFO    200    -    RTPSessionTracker.remove[rtsp://[wowza-ip-address]/myStream.3gp]: 0:true    -    -    -    853.439  
comment    server    INFO    200    -    RTPUDPTransport.unbind[live/_definst_]: 0.0.0.0/0.0.0.0:5989    -    -    -    853.439  
comment    server    INFO    200    -    RTPUDPTransport.unbind[live/_definst_]: 0.0.0.0/0.0.0.0:5982    -    -    -    853.439  
comment    server    INFO    200    -    RTPUDPTransport.unbind[live/_definst_]: 0.0.0.0/0.0.0.0:5983    -    -    -    853.439
comment    server    INFO    200    -    RTPUDPTransport.unbind[live/_definst_]: 0.0.0.0/0.0.0.0:5983    -    -    -    853.439
		
原因: 2或4行的有bind的内容,后面很快出现2后4行unbind内容暗示有一个UDP session错误,端口无法访问。通常这是由于Wowza Media Server所在服务器的防火墙的原因。也有可能是路由器、代理服务器的原因。或者可能是RTSP流应用的运营商网络问题。


server  WARN    200 - RTPDePacketizerWrapperPacketSorter.packetLoss\[live/_definst_/streamOne.sdp:trackID=2\]: last:13066 curr:25584    
server  WARN    200 - RTPDePacketizerWrapperPacketSorter.packetLoss\[live/_definst_/streamTwo.sdp:trackID=1\]: last:63732 curr:14634 
server  WARN    200 - HTTPStreamerAdapterCupertinoStreaming.getAppInstan  ce: Stream not found \[live/_definst_/streamThree.sdp/playlist_w1234567890.m3u8]: myStream.sdp  68998.779
		
原因: 在同一个网络内有另一个编码器也在向Wowza服务器的相同通道推送数据包,引起了冲突。它看起来有些像是有些流丢包的问题。

另一个故障排查提示: 注意在上一个和当前的值有很大的区别。如果是RTP,数值应该都是类似的。数据包排序只发生在流是RTP包的情况下。 我们在RTP包头使用了序列号(sequence number),用它来进行重新排序。由于这个数值差距非常大,它通常意味着这个流不是RTP。 可能引起问题的流是MPEG-TS,不是RTP封装的。


comment client connectionClosed [236894567] watchdog
		
原因: 当watchdog关闭连接时,它意味者Wowza Media Server不再接收来自Flash播放器的请求,Flash播放器当使用RTMPT时,会使用投票机制。它大概每500毫秒做一次投票。如果Wowza Media Server 在90秒内没有收到来自客户端的消息,它内部的client对象无法判定连接是否已经断开。 你可以用Wireshark来测试是否有代理正在从客户端向WWowza Media Server发送请求。


RTPDePacketizerWrapperPacketSorter.handleRTPPacket["+contextStr+":"+rtpTrack.getTrackId()+"]: Stream is MPEG-TS which is not supported by packet sorter. Packets will be forwarded.
原因: (Wowza Media Server 3.0中的新功能) 数据包排序器forwards MPEG-TS 数据包,并报告这个log。方括弧中的部分为appName/appInstanceNAme/streamName:trackname


Error parsing VHosts.xml (file:///usr/local/WowzaMediaServer/conf/VHosts.xml): java.util.ArrayList cannot be cast java.util.ArrayList cannot be cast to org.w3c.dom.NodeList
Exception in thread "main" java.lang.NoClassDefFoundError: com.wowza.wms.server.Server
   at java.lang.Class.initializeClass(libgcj.so.7rh)
		
原因: 当尝试启动Wowza Media Server时会遇到这个问题。"libgcj.so" 暗示它是随Linux发行版中的一个老的Java版本。安装最新的Oacle Java版本并在重新启动Wowza Media Server之前检查它是否安装正确。


server    WARN    404    [path-to-video-file]     MediaReaderH264.open[2]: java.lang.Exception: QTUtils.parseQTMediaContainer: File is missing 'moov' atom.
		
原因: 尝试按流媒体播放一个正在录制中的文件。当stream停止发布时,Wowza Media Server将会将moov atom 数据写入文件的最后。 你可以用IMediaWriterActionNotify listener 来监听文件是否录制完成。如果你使用nDVR插件,你就可以在录制的同时播放直播流。

当你用mp4流前缀试着播放一个是H.264编码但不是mp4格式的文件时也会遇到这个错误。例如,你从编码器发布了一个H.264视频然后用Wowza Media Server将其录制为一个FLV文件。 如果你这时使用mp4流前缀播放,你会遇到这个错误。正确的方式是将这个文件当作一个标准的FLV文件。


WARN    server    comment        MediaReaderH264.open[2]: java.lang.Exception: QTUtils.parseQTMediaContainer: Atom size is invalid: 0.
		
原因: Occurs 当尝试播放一个非mp4文件时会遇到这个问题。这个错误是由MP4文件解析器抛出的,暗示它无法找到它期望的信息。 通常这是由于错误的前缀造成的。例如,如果你试着用"mp4:"前缀播放一个FLV文件,你就会遇到这个错误。


ERROR server comment QTWriterUtils.loadForAppend[path-to-video-file][index]: Bad atom length: -8
WARN server comment QTWriterUtils.loadForAppend[path-to-video-file][index]: MOOV Atom is missing
WARN server comment QTWriterUtils.loadForAppendParseMOOV[path-to-video-file]: WARNING: Append: The 'stsc' atom has incorrect sample count information: missingSampleCount:26 lastChunkCount:1 lastSamplesPerChunk:25 totalSampleCount:79926 samplesAccountedFor:79900
		
原因: 当录制视频时,如果在录制完成前,你移动了这个文件,那么这个文件就无法播放,你将会看见缺少moov atom 的错误信息。 当流停止发布时,Wowza Media Server 会在文件的最后写入moov atom 数据。如果在流停止发布的机制上遇到问题,最终的录制文件可能就会有错误,例如如果服务器被关闭或者因为某些原因没有触发停止发布动作。


ERROR server comment  QTWriterUtils.loadForAppend[path-to-video-file][index]: Bad atom length: -8
WARN server comment  QTWriterUtils.loadForAppend[path-to-video-file][index]: MDAT Atom is missing
		
原因:在录制文件是会遇到这个问题。例如,在录制视频时将内容写入目标文件时会导致这个错误。mdat atom 是一个必须的顶级atom。


WARN server comment MediaReaderFLV.open: Metadata appears to be bad: [stream-name]
		
原因: 可能是一个跟FLV文件格式相关的问题。这个错误暗示这个文件没有包含onMetaData包。你应该对有这个可能有问题的文件具体分析。

对MP4类型的文件缺少前缀(例如,sample.mp4 而不是 mp4:sample.mp4)。由于Wowza Media Server 忽略了文件后缀名,因此如果缺少前缀,服务器就会用默认的文件解析方式(MP4),但是MediaReaderH264是必须的。 增加前缀或许会解决这个问题。如果你没有增加前缀,JW Player会检测它是什么文件并为你加上前缀。 其它播放器是否会加这个前缀,我们不确定。Wowza 的例子播放器是不会自动加上这个前缀的。


ERROR server comment MediaReaderFactory.getInstance: Missing definition for mov
		
原因: 尝试用mov前缀播放.mov文件时,遇到这个错误,因为Wowza没有mov这个前缀的媒体类型。


java.io.IOException: Too many open files
    at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
    at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSo  cketChannelImpl.java:152)
    at org.apache.mina.transport.socket.nio.SocketAccepto  r$Worker.processSessions(Unknown Source)
    at org.apache.mina.transport.socket.nio.SocketAccepto  r$Worker.run(Unknown Source)
    at org.apache.mina.util.NamePreservingRunnable.run(Un  known Source)
    at java.lang.Thread.run(Thread.java:662)
	
原因: 请确认你依据如何对Wowza Streaming Engine进行性能调优?的介绍对Wowza Streaming Engine做了合适的性能调优。 对于这个错误,你阅读文章中的第9条。


4001 AG_E_NETWORK_ERROR.
		
原因: 这个消息是由Microsoft Silverlight player生成的,而非Wowza Media Server ,因此它不会被记录在Wowza 的log。 这个错误通常是由于端口没有开放或不正确的URL。你可以测试一下,看看可以用我们的Silverlight demo来播放。


java.lang.NullPointerException
    at com.wowza.wms.httpstreamer.cupertinostreaming.file  .MediaReaderH264Cupertino.fillChunk (Unknown Source)
    at com.wowza.wms.httpstreamer.cupertinostreaming.file  .HTTPStreamerCupertinoIndexFile.fillChunk (Unknown Source)
    at com.wowza.wms.httpstreamer.cupertinostreaming.file  .HTTPStreamerCupertinoIndexBase.getChunk (Unknown Source)
    at com.wowza.wms.httpstreamer.cupertinostreaming.http  streamer.HTTPSstreamerAdapterCupertinoStreamer.onM  ediaFile (Unknown Source)
    ----
		
原因: 这是一个文件结构引起的问题。你可以用其它文件或我们的demo 文件来测试,看看是否是文件的问题。需要我们支持时请提供的直播流或VOD文件以供分析。


Access Forbidden (403)
		
原因:这个错误发生在一个编码器要试着连接Wowza Media Server时。它不会被记录在Wowza的log中。产生它的原因可能是在编码器上设置的应用没有在Wowza Media Server上配置,也可能是试着将Wowza Media Server看作是一个WEB服务器来播放上面的文件,这是不会工作的。例子中的.html文件,应用直接用Web浏览器打开。


comment    server    WARN    404    mpegts.stream    MediaReaderH264.open[1]: java.io.FileNotFoundException: C:\Program Files (x86)\Wowza Media Systems\Wowza Media Server 3.0\content\mpegts.stream (The system cannot find the file specified)
原因: 当Wowza没有发现这个流时会遇到这个错误。通常的原因是Application.xml文件中的Streams/StreamType没有设置正确或者是这个流是用StreamManger启动的但在启动时选择了错误的MediaCaster类型。


comment server    ERROR    Close RTSP/RTP session. Session timeout: 90000
	  
原因: 超过了Timeout限值。可以在[install-dir]/conf/[app-name]/Application.xml文件的RTP/RTSPSessionTimeout中设置这个值。 单位是毫秒。设置为0就永远也不会超时。对于有问题的MediaCaster流,请阅读如何对一个MediaCaster流启用高级监控和重置功能?. Stream监控器将监控这些流,当有问题时会重置它们。


WARN    server comment HTTPStreamerAdapterSanJoseStreamer.onPlaylist: Application context not loaded [dvr/myStream/manifest.f4m?DVR]: dvr/_definst_]: dvr/_definst_
WARN    server comment HTTPStreamerAdapterSmoothStreamer.onPlaylist: Application context not loaded [dvr/myStream/manifest.f4m?DVR]: dvr/_definst_]: dvr/_definst_
WARN    server comment HTTPStreamerAdapterCupertinoStreamer.onPlaylist: Application context not loaded [dvr/myStream/manifest.f4m?DVR]: dvr/_definst_]: dvr/_definst_

WARN    server    comment    HTTPStreamerAdapterSanJoseStreamer.onMediaFile: Application context not loaded [vod/mp4:sample.mp4/media_w532002815.ts]: vod/_definst_
WARN    server    comment    HTTPStreamerAdapterSmoothStreamer.onMediaFile: Application context not loaded [vod/mp4:sample.mp4/media_w532002815.ts]: vod/_definst_
WARN    server    comment    HTTPStreamerAdapterCupertinoStreamer.onMediaFile: Application context not loaded [vod/mp4:sample.mp4/media_w532002815.ts]: vod/_definst_
		
原因: 当应用名或URL是非法的时会遇到这个问题。如果使用例子播放器,经常遇到的问题是你的应用名不是默认的应用名。请检查URL。


WARN    200    server    comment HTTPStreamerAdapterSanJoseStreamer.service: Request timeout: 12000
WARN     200    server     comment HTTPStreamerAdapterSmoothStreamer.service: Request timeout: 12000
WARN     200    server     comment HTTPStreamerAdapterCupertinoStreamer.service: Request timeout: 12000
	
原因:在timeout时间内没有流连接请求,请检查输入源和编码。


WARN    server    comment    HTTPStreamerAdapterSanJoseStreamer.onPlaylist: Application context not loaded [[live/myStream/manifest.f4m]: live/_definst_]: live/_definst_
WARN    server    comment    HTTPStreamerAdapterSmoothStreamer.onManifest: Application context not loaded [live/myStream/Manifest]: live/_definst_
		
原因:Application.xml文件中的HTTPStreamers属性的设置不包括你正在尝试播放的流传输类型时会遇到这个问题。这些类型包括cupertinostreaming, smoothstreaming, sanjosestreaming. 例子中的Silverlight player 则会报错: "Streaming Error: Failed to download manifest: d"


HTTPStreamerAdapterCupertinoStreamer.onPlaylist[live/_definst_/myStream/playlist_w639247249.m3u8]: Session not accepted[639247249]
		
原因: 流是非法的或session超时了。


comment server ERROR 500 - ModulePushPublishSimpleExample#StreamNotify.onPubl  ish: com.wowza.wms.server.LicensingException: Server.license
comment server ERROR 500 - ModulePushPublishSimpleExample#StreamNotify.onPubl  ish: com.wowza.wms.server.LicensingException: Server.license
comment server ERROR 500 - ModulePushPublishSimpleExample#StreamNotify.onPubl  ish: com.wowza.wms.server.LicensingException: Server.license
		
原因: 你确认在使用最新版本的Push Publishing 模块。请联系sales@wowza.com 申请这个模块。


WARN 200 RTPPacketFragmentListReader.skip: Bad skip count: -123456789
		
原因: 这暗示有丢包或有不完整的数据包。当CPU利用率和硬件加速时的GPU利用率达到后超过最大能力和限制时,或者是否有太多的网络堵塞会出现这个消息。 请确认Wowza Media Server 经过了基本的性能调优。请阅读如何对Wowza Media Server进行性能调优?


ERROR 500 - addDataA[this.size:248620 this.dataA.length:248620 this.startDataLoc:278333 this.dataLoc:278333 data.length:4016 offset:152 size:32 missing:22 ]: java.lang.ArrayIndexOutOfBoundsException
		
原因: 没有收到正确总数的包个数。当CPU利用率和硬件加速时的GPU利用率达到后超过最大能力和限制时,或者是否有太多的网络堵塞会出现这个消息。 请确认Wowza Media Server 经过了基本的性能调优。请阅读如何对Wowza Media Server进行性能调优?


WARN 200 - RTPDePacketizerWrapperPacketSorter.handleRTPPacket[:mpegts]: Stream is MPEG-TS which is not supported by packet sorter. Packets will be forwarded.
原因: 如果你的流不适用包排序时,请在你的Application.xml文件的配置中删掉它。


Server ERROR    403    ModuleRTMPAuthenticate.checkSecureToken: Action before response received: kill connection:
		
原因:一个RTMP客户端正在试着连接服务器,但它没有对secure token 请求做出响应。请检查集成到播放器中的代码是否正确。


DirectRandomAccessReader.read: java.io.IOException: The specified network name is no longer available
		
原因: 网络相关问题。请检查[install-dir]/conf/[app-name]/Application.xml文件中的StorageDir属性的盘符或UNC路径是否是可用的。


ERROR 500 - server core failure: java.lang.NullPointerException
		
原因: 可能是安装时的错误。请试着重新安装Wowza Media Server.


ERROR server comment Failed to connect: org.apache.mina.common.RuntimeIOException: Failed to get the session[ConnectException: Connection timed out: no further information]
ERROR server comment RTPSessionDescriptionDataProviderBasic.getStreamIn  fo: RTSP/RTP re-streaming timeout.
		
原因: 这两个错误都和网络连接有关,一个无法连接MediaCaster流。看看前面几行log找找线索。这也可能是由于达到了Wowza服务器所能处理的流的极限。可能你需要增加新的服务器。推荐安装高级的媒体流监控,它将监控并对有问题的流进行重现设置,并可以通过JConsole监控服务器。


ERROR server comment RTPMulticastListener.unbind:java.net.SocketExcepti  on: error setting options
		
原因: 通常是由于网络连接问题引起的。


ERROR server comment packetSizeReset: 12:345
ERROR server comment Zero sized function (client): type:20 size:0 index:123
ERROR server comment Data format incorrect, killing client connection.
		
原因: 这个可能会由很多方面引起,但是通常是由于TCP通信错误。 它通常是因为Wowza Media Server被压垮了,比如CPU、I/O、网络甚至是垃圾收集器(GC)运行的时间太久了。 在如何对Wowza Media Server进行性能调优?中有对GC的优化介绍以及一些其它方面的检查。


INFO smoothstreaming connect 123456789 -
INFO stream create videos/myStream.smil -
[Fatal Error] :2:7: The element type "smil" must be terminated by the matching end-tag "</smil>".
ERROR server comment MediaListReaderSMIL.readMediaList[vod/_definst_:videos/myStream.smil]: org.xml.sax.SAXParseException: The element type smil must be terminated by the matching end-tag "</smil>".
WARN server comment HTTPStreamerSmoothStreamerIndexPlaylist.indexFile[vod/_definst_/smil:videos/myStream.smil]: MediaList is empty.
WARN server comment HTTPStreamerCupertinoIndexPlaylist.indexFile[vod/_definst_/smil:videos/myStream.smil]: MediaList is empty.
WARN server comment HTTPStreamerSanJoseIndexPlaylist.indexFile[vod/_definst_/smil:videos/myStream.smil]: MediaList is empty.
		
原因: 错误的.smil 文件,缺少<head> 标签。


Media Error: 3016 An error has occurred.
	  
原因: 当.smil文件有错误时、在streamname两边缺少引号时,这个错误出现在SimpleVideoStreaming/clientSilverlight (Wowza Media Server 3.1.2) 或 VideoOnDemandStreaming/SilverlightPlayer (Wowza Media Server 3.5) 例子播放器中。 在Wowza Media Server 的控制台或log中不会出现这个错误。但在日志中会出现流的create/play/stop/destroy的消息。


INFO 200 - ShoutCastReceiver.internalConnect: http://www.mywebsite:1234/
INFO 200 - ShoutCastReceiver.internalConnect: http://www.mywebsite:1234/ - - - 
INFO 200 - ShoutCastDecoder.checkHeader[default.stream]: ICY response: ICY 401 Service Unavailable
		
原因: 通常是由于连接SHOUTcast/Icecast流时失败:

  • 端口被阻隔。检查端口是否被阻隔或与其它应用能够冲突。
  • SHOUTcast/Icecast 服务器下线了,导致重连失败。
  • 不正确的URL。请看How to re-stream audio from SHOUTcast/Icecast故障排查章节的第一条。 你需要使用一个media URL,而不是playlist URL.
  • 如果这是一个间歇性问题,可能的原因是SHOUTcast/Icecast流不太稳定。


WARN server comment - RTPDePacketizerMPEGTS.handleRTPPacket: Out of sync: 0x[nn]
		
原因: 这可能是 两个编码器将流发布到到了同一个端口。它也有可能是因为流没有对齐。请尝试将videoIsAligned 属性设置为 false,在How to troubleshoot live streaming中有介绍。 并且要安装最新版本的Wowza Media Server。最新的development build 可以在这里找到。
原因: MPEG-TS 编码器可能会通过UDP发布没有对齐的TS数据包。在[install-dir]/conf/[application]/Application.xml文件RTP/Properties container中添加下面的属性:
<Property>
    <Name>rtpDePacketizerWrapper</Name>
    <Value>com.wowza.wms.rtp.depacketizer.RTPDePacketizerWrap  perReChunkMPEGTS</Value>
</Property>
注意:Wowza Media Server 仅允许一个rtpDePacketizerWrapper。如果你配置了抖动缓冲 或者包录制器并使用了相同的rtpDePacketizerWrapper,就必须要删除它们。

WARN server comment - RTPDePacketizerBase.checkRTCPSSRC: ssrc error: e8b92a:6319b7c8
		
原因: 这通常意味着编码器在开始发布RTP数据包后又停止了,但它并没有超时。当发生这种情况时,RTP包的ssrc属性发生了变化。Wowza Media Server会阻断输入的RTP数据包,因为这个值发生了变化。 在接收RTP数据包时,有12秒的超时时间。只要编码器停止发送数据超过12秒,这个流应该被重置, then the stream should reset and be OK.

comment server  WARN    200     -       Waiting for RTCP packet. See docs for (Application.xml: RTP/AVSyncMethod and RTP/MaxRTCPWaitTime).
		
原因: 发送方报告Sender Report (SR) 数据包是通过Real-time Control Protocol (RTCP)通道发送的,在[install-dir]/conf/[application-name]/Application.xml文件的RTP/MaxRTCPWaitTime属性定义的超时时间内没有到达时。 SR数据包提供了RTP数据包中音频和视频的时间信息。如果Wowza Media Server 没有探测到输入流RTP包的SR数据包,它将在log文件中记录这个信息并将尝试用RTP数据包中的RTP时间戳同步音频和视频。


WARN server comment - HTTPStreamerAdapterCupertinoStreamer.onEncKey[live/_definst_/myStream/key_w1063299536.m3u8key]: onEncKey is not enabled.
		
原因:这个警告说明Application.xml中的HTTPStreamer/PropertiesonEncKey传输不可用。由于安全问题,它默认是关闭的。
<Property>
	  <Name>cupertinoEnableOnEncKey</Name>
	  <Value>true</Value>
	  <Type>Boolean</Type>
</Property>
		


Wowza nDVR Logging



comment    server    WARN   DvrApplicationStoreManagerBase.removeStream() stream foo does not exist in this DVR.
		
原因: 这是一个正常的警告,发生在:

  • 播放器从流foo请求切片数据,但是因为用户删除了foo,它不存在了。

  • Application.xml文件的ArchiveStrategy属性被设置为delete


comment    server    WARN   Current DVR time tried to move backwards.  Ignored new time.  Old time=422310.  New time=0.
WARN server comment - DvrPacketHandler.handlePacket[live/_definst_/myStream.stream]: Timecode out of order [audio]: 8166079375 : 8166079384
		
原因: 编码器发送了奇数时间戳的数据包。nDVR记录了这个问题,但无法解决它。


WARN LiveStreamDvrRecorder.endChunk[live/_definst_/myStream]: Recalculating duration by estimating.  Was -601.  Is now 811.
	
原因: 这是Wowza nDVR 内建的安全保护机制。如果Wowza Media Server 检测到一段非法的切片数据。它将尝试通过重新计算时钟是否被重置了来修复它。如果不能修复,这段切片数据就会被丢弃。


WARN  DvrPacketHandler.handleHolder(): Skipping holder that cannot be re-aligned. Holder: {DvrPacketHolder: type:V pt:3332574 utc:1335872445912 dur:1230 (KEY, ) codec:7 numPackets:0 dataLen:18513 enc.n:0 pkt:{{DvrAMFPacket: size:18513, type:9, src:1, seq:0, absTimecode: 3332574, timecode:1230, utcTc:1335872445912}}}
		
原因: 这是Wowza nDVR 内建的安全保护机制。这个警告消息报告说这段数据段无法对齐。


WARN  DvrPacketHandler.handlePacket[live/_definst_/myStream]: Tossing packet with excessive duration: {DvrAMFPacket: size:6785, type:9, src:32185, seq:126, absTimecode: 35557077, timecode:131362, utcTc:1337890914597}
		
原因: 这是Wowza nDVR AddOn内建的安全保护机制。Wowza nDVR 期望进入Wowza的输入流中的音频和视频数据包是对齐的。 当音频和视频不对齐超出了能忍受的范围,你将会在log中看到这个警告消息。这说明丢包和有问题的输入源。请看Wowza Ndvr插件的一些高级配置中对dvrAllowableAVPacketDelta的介绍,试着对没有对齐的问题做补偿。


WARN    server    comment        myStream     MediaReaderH264.open[1]: java.io.FileNotFoundException: /usr/local/WowzaMediaServer/content/myStream (No such file or directory)
		
原因:Application.xml文件中的StreamType参数被设置为default而不是live。Wowza nDVR 只支持直播流业务。这个信息说明Wowza Media Server在内容目录下找VOD文件。请将Streams\StreamType参数修改为live


WARN    server    comment        ApplicationInstance.setdvrList[dvr/_definst_]: dvr is not valid: dvrrecoder
		
原因:[install-dir]\conf\[app-name]\Application.xml文件中,'dvrrecorder' 被写错了。请仔细看消息的最后一个单词。


ERROR    server    comment        LiveStreamDvrRecorderBase.initProperties[live/_definst_/myStream] : DVR/Store 'foo' is not a known DVR store.  DVR is unable to record.
		
原因: 'foo' 不是一个合法的DVR存储空间。如果是单台服务器或多台服务器中的源服务器,请将DVR/Store参数设置为dvrfilestorage。如果是边缘服务器,空着就行。


ERROR    server    comment    LiveStreamDvrRecorderBase.initProperties[live/_definst_/myStream] : DVR/Store not set in Application.xml.  DVR is unable to record.
		
原因:DVR/Store属性没有设置任何值。请将DVR/Store设置为dvrfilestorage.


ERROR    server    comment    LiveStreamDvrRecorderBase.initProperties[live/_definst_/myStream] : DVR/StorageDir not set in Application.xml.  DVR is unable to record.
		
原因:DVR/StorageDir属性没有设置任何值。默认值<StorageDir>${com.wowza.wms.context.VHostConfigHom e}/dvr</StorageDir>


WARN    server    comment    DvrStreamStoreBase.startRecording[live/_definst_/myStream/myStream_0] : Attempt to start recording stream that cannot record.
		
原因: See other DVR/Store property errors. 通常 one of those precede this warning message.


ERROR    server    comment    DvrStreamStoreBase.storeChunks[DVR/_definst_/myCamera.stream/myStream.0] : Skipping chunk. A/V packet times differ by 3025 ms, more than allowed 2000 ms.   aTime=3749903889 vTime=3749906914
		
原因: log中的这类错误信息说明在音频/视频数据包对齐上有问题。因为这个对齐问题,数据切片没有被录制。解决这个问题最好的方式是在Wowza nDVR 插件上游解决(通常是在编码器上解决)。我们强烈建议你在录制之前解决任何音频和视频对齐的问题。你可以在Application.xml文件的中设置一些nDVR参数来补偿这个问题。 要注意,这些参数不会解决对齐问题,但是可以适应这个问题而继续工作。请看Wowza nDVR Advanced Configuration article中对dvrPacketSortTimedvrAllowableAVPacketDelta的介绍。


comment    server    WARN    200    LiveStreamDvrRecorder.reportCodecInformation[live/_definst_/myStream][avc1.77.31]: H.264 (Video may not be playable on older iPhone and iPod touch devices where Main/Level 3.1 or lower is required) Video info: : {MediaCodecInfoVideo: codec:H264, profile:77, level:4.1, frameSize:320x240, displaySize:320x240, frameRate:29.970000}
		
原因: 这个警告告诉你,依据流的编码格式,在一些老的苹果iOS设备上可能无法播放视频。请参考Apple iOS设备支持的Profile和level信息


comment    server    ERROR    500    -    DvrStreamStoreBase.storeChunks[live/_definst_/myStream] : AudioDuration=30624 > 20000 ms.  Skipping chunks.
comment    server    ERROR    500    -    DvrStreamStoreBase.storeChunks[live/_definst_/myStream] : VideoDuration=30600 > 20000 ms.  Skipping chunks.
		
原因: 当切片时长超过设置的值时会发生这个错误。请参考Wowza Ndvr插件的一些高级配置中对dvrAudioOnlyChunkTargetDuration的介绍。


WARN    server    comment    DvrPacketHandler.handlePacket[liveDVR/_definst_/myStream]: Timecode out of order [video]: 71500:71580
		
原因: 通常这是编码器的问题。也有可能服务器CPU利用率和GPU利用率达到最大限度。要调试这个问题,请参考How to debug AAC or MP3 timecode issues with cupertino packetization. 请尝试使用Advanced Stream Monitor 对流进行监控,当流有问题时重置它们。如果当你在流被发布出来后并在打包启动之前立刻就看到这个信息,你可以忽略它。


WARN    server comment HTTPStreamerAdapterSanJoseStreamer.onISMVData: Application context not loaded [live/ngrp:myStream_all]: live/_definst_
WARN    server comment HTTPStreamerAdapterSmoothStreamer.onISMVData: Application context not loaded [live/ngrp:myStream_all]: live/_definst_
WARN    server comment HTTPStreamerAdapterCupertinoStreamer.onISMVData: Application context not loaded [live/ngrp:myStream_all]: live/_definst_
		
原因: 当应用名和URL不正确时会遇到这个问题。如果使用Wowza的例子播放器,常常是由于你的应用名和默认的应用名不同。请检查URL。


ERROR server comment - MediaReaderFactory.getInstance:java.lang.ClassCast  Exception: com.wowza.wms.mediareader.smil.MediaListReaderSMIL cannot be cast to com.wowza.wms.stream.IMediaReader
		
原因: 这是RTMP协议播放SMIL文件表示的多码率自适应流时的问题。这个错误发生在如果你试着用[install-dir]/examples/LiveVideoStreaming/FlashRTMPPlayer/player.html来播放(Wowza Media Server 3.5) 或用 [install-dir]/examples/LiveVideoStreaming/client/live.html来播放(Wowza Media Server 3.1.2 or earlier) 流: smil:mySmilFile.smil。


WARN server comment - Missing function: DVRSubscribe
WARN server comment - Missing function: DVRGetStreamInfo
		
原因: Wowza nDVR 支持通过HTTP协议播放录制流。这些警告发生在当你试着采用nDVR不支持的协议。


Wowza Transcoder Logging



WARN    server    comment    LiveStreamTranscoder.isTranscoderAvailable: Transcoder is not available for your platform: platform:null architecture:32
		
原因: Transcoder插件需要64位平台。这个警告发生在当Wowza Media Server安装在非64位系统上或使用了老版本的Java系统。 请参考这篇文章关于解决Java版本问题的介绍:安装最新的Java版本后,Java命令依然在用老版本的Java


WARN    server    comment    ApplicationInstance.setLiveStreamTranscoderList[live/_definst_]: LiveStreamTranscoder is not valid: transcoder
		
原因: Transcoder 没有正常启动,并且log中的其它错误信息可能会包括安装错误或权限问题。在重新安装之前,将[install-dir]\conf中的目录和文件都备份下来,在重新配置时可以做参考。 另一个原因可能是"transcoder"在[install-dir]\conf\[app-name]\Application.xml中被拼写错了。请仔细检查错误信息中的最后一个单词。


WARN    server    comment    TranscoderStreamNameGroups#DelayStart.run[live/_definst_/myStream]: Name group could not be resolved: myStream_all reason:[bitrateMissing:true videoCodecIdMissing:true audioCodecIdMissing:false sizeMissing:true]
Endoder failure.
		
原因: 期望的数据流没有被送入Wowza Media Server。请检查输入源。


WARN    server    comment    HTTPStreamerCupertinoIndexPlaylist.indexFile[live/_definst_/ngrp:myStream_all]: MediaList is empty.
		
原因: 有好多原因会引起这个错误:

  • 不正确的URL或transcoder模版有错误。请检查<StreamNameGroup>/<StreamName>的设置(不是<StreamNameGroup>/<Name>),它是直播流组的名字。在这个案例中,原始流的名字是myStream,但问题出在<StreamNameGroup>/<StreamName> 的值不是 ${SourceStreamName}_all

  • <Encode>/<Name><StreamNameGroup>/<Members>/<Member>/<EncodeName> 不一样。在同一个模版中,你会看到编码部分的<Name>360p</Name> 会匹配直播流组中的一个成员(<EncodeName>360p</EncodeName>)。

  • 被加载的Transcoder模版不是你希望的模版,因此播放URL中stream name 不正确。Wowza Media Server 将使用在Application.xml文件Transcoder/Templates中的第一个模版文件。检查日志来验证当前使用的是哪一个模版文件。

  • 转码后的输出流的其它错误,例如没有声音。


WARN 200 - TranscoderStreamNameGroup.validateMembers[live/_definst_/myStream]: StreamNameGroup[160p] audio codec is not valid for name group: UNKNOWN (unknown)
		
原因:输入源没有声音。

WARN 200 - TranscoderStreamNameGroup.addInternal[live/_definst_/myStream]: Name group was not added, it is empty: myStream_all
		
原因: 由于Wowza Transcoder不能对流进行转码,因此直播流组没有被成功创建。请确认输入流使用了Wowza Transcoder支持的编码格式(see 支持的输入流音频和视频编码格式)。 同时,你要确认转码模版中所有<Encode>中的Enable参数被设置为true


comment    server    INFO    200    -    TranscodingSession.updateBehindFilter[live/_definst_:myStream]: Video behind filter state change. New state: SKIP1FRAME    
comment    server    INFO    200    -    TranscodingSession.updateBehindFilter[live/_definst_:myStream]: Video behind filter state change. New state: SKIP2FRAME    
comment    server    INFO    200    -    TranscodingSession.updateBehindFilter[live/_definst_:myStream]: Video behind filter state change. New state: ALLFRAMESON
原因: 这些INFO 消息说明Wowza Media Server的运行压力过大,不能及时处理数据包。 通常是由于CPU利用率和为了硬件加速使得GPU利用率都超过了服务器的最大限值。 请确认Wowza Media Server经过了性能调优。请参考如何对Wowza Media Server进行性能调优?Wowza transcoder的转码性能


WARN    server    comment        200    SanJosePacketHandler.handlePacket[live/_definst_/myStream]: Timecode out of order [video]: 27:25191
WARN    server    comment        200    CupertinoPacketHandler.handlePacket[live/_definst_/myStream]: Timecode out of order [video]: 27:25191
WARN    server    comment        200    LiveStreamPacketizerSmoothStreaming.handlePacket[live/_definst_/myStream]: Timecode out of order [video]: 120000:306630000
WARN    server    comment        200    SanJosePacketHandler.resetStream[live/_definst_/myStream][0:11]: Timecodes jumped back in time.
WARN    server    comment        200    CupertinoPacketHandler.resetStream[live/_definst_/myStream][0:11]: Timecodes jumped back in time.
WARN    server    comment        200    LiveStreamPacketizerSmoothStreaming.resetStream[live/_definst_/myStream][0:11]: Timecodes jumped back in time.
原因: 通常情况下,这是编码器的问题。也有可能是由于服务器的CPU利用率和GPU利用率达到的极限。 调试时,请参考如何调试AAC或MP3在HLS打包时的时间戳问题?. 请试着用如何对MediaCaster流进行实时监控? 来对流进行监控并当它有问题时进行重置。 如果当你在流被发布出来后并在打包启动之前立刻就看到这个信息,你可以忽略它。


comment    server    ERROR    500    -    MediaReaderFactory.getInstance: java.lang.ClassCastException: com.wowza.wms.stream.MediaListReaderNGRP cannot be cast to com.wowza.wms.stream.IMediaReader
		
原因: 应用的StreamType没有设置为live类型。 这会导致错误的stream causes the wrong stream classes to be invoked.


WARN    server    comment    2012-02-17    10:27:55    55.77    Application folder ([install-location]/applications/registry) is missing
		
原因:这个信息是由于在服务器后启动了Adobe Flash Media Gateway service,这个服务默认会自动启动。


WARN server comment - Missing function: createStream
		
原因: 这个问题可能是由于Application.xml文件有错误。请从[install-dir]/conf下拷贝一个新的配置文件,然后重新启动。


Wowza DRM 的日志



comment    server    WARN    200    -    ModuleDRMEZDRM.getPlayreadyLicense[vod/_definst_]: EZDRM content key is not set.
comment    server    WARN    200    -    ModuleDRMEZDRM.onHTTPSmoothStreamingPlayReadyCreat  eVOD[vod/_definst_/sample.mp4]: Key request failed. ifFailFakeKey:false
		
原因:如果你在wowzamedia_access.log中意外的看到了这些信息,请检查Application.xml你是否设置了正确的EZDRM用户名和密码信息。


ERROR server comment - PlayReadyEncryptor.initKey: java.security.InvalidKeyException: Illegal key size or default parameters
		
原因: Microsoft PlayReady 的加密密钥应该是128位长度(16 个字节)。当这个密钥长度不合规时就会遇到这个信息。Wowza仅支持128位密钥长度。


ERRORservercomment2013-08-0614:03:07-----290.512--------BuyDRMUtils.httpRequest[send]: java.net.SocketTimeoutException: connect timed out
		
原因: "connect timeout" 表示Wowza尝试去建立连接,但是无法做到。BuyDRM 通过一个URL从服务器连接一个web service。 请确认服务器上所有对外和对内的防火强规则并在网络层面允许安全端口上的通信。


comment    server    WARN    200    -    ModuleDRMBuyDRM.onHTTPCupertinoEncryptionKeyVODChu  nk[buydrm/_definst_/sample.mp4]: Lookup resulted in UNKNOWN status
		
原因: Wowza Media Server 无法找到buydrmstreammap.txt 映射文件。 当在Application.xml文件中添加参数来配置BuyDRM模块时,drmBuyDRMStreamNameMapFile 参数设置了一个映射文件的位置。默认值是[install-dir]/conf/buydrmstreammap.txt。 要了解更多关于如何为你的应用配置BuyDRM模块,请参考How to set up and test BuyDRM KeyOS DRM (PlayReady)中"Configuration"章节的介绍。