我使用的是Adobe Media Server 4.5和FLEX 4.6.0 sdk。
我有一个.swf应用程序,它通过RMTP连接到Adobe Media Server,从用户的网络摄像头和麦克风接收音频和视频输入,并执行NetStream.publish()将文件流式传输到服务器。当用户录制视频时,文件的大小会变大。有时,生成的文件最终的大小为1kb。
是什么导致了这个问题,我该如何防止它,或者结束会话并通知用户出了问题?
编辑:
一些可能有助于识别问题的其他问题/评论/意见:
这只发生1%的时间,我不确定我可以用什么来解决这个问题。在AMS生成的日志文件过期之前,我从来没有能够捕捉到这种情况何时发生。
我的理论是,当客户端在某处失去连接时,会发生这种情况。
只要NetStream正确发布,文件的大小就会增长。如果文件不增长,这应该意味着NetStream失去了连接。鉴于文件大小为1kb,流在开始发布后一定立即失去了连接。
我也在notepad++中打开了这个文件,得到了这个:
FLV [SOH][NUL][NUL][NUL][NUL] [NUL][NUL][NUL][NUL]
另一种理论是,某些东西有机会覆盖我的文件,但这不太可能
有同样的问题,但只有0.001%的情况。
最常见的问题是麦克风。在发布流之前需要检查麦克风
另一个可能的问题:
- 客户端中断流-
NetStream.Record.Stop
- 退出应用程序-
onDisconnect
- Сlient禁用麦克风/摄像头
- " FLV段缓存已满"
可以在服务器上调用onUnpublish
事件时发出警告。
我也使用定时器后的publish ()
方法在客户端,如果3-5秒后NetStream.Record.Start
事件没有被调用,那么客户端有问题,它应该被阻止。