我使用Wowza GoCoder将视频发布到自定义Wowza实时应用程序。在我的应用程序中,我在IRTSPActionNotify
回调中附加了一个onRTPSessionCreate
事件监听器。在我onRecord
的{{1}}回调中,我执行各种任务 - 开始录制直播流等。在我的IRTSPActionNotify
回调中,我停止录制并对录制的视频进行一些额外处理,例如将视频文件移动到其他存储位置。
我刚才注意到,如果编码器超时,由于连接丢失,电源故障或其他突发事件,我将不会收到onTeardown
事件 - 即使在RTSP会话超时时也是如此。这对我来说是个大问题,因为在我通过其他应用程序将发布的流提供给按需视图之前,我需要执行此额外处理。
我一直在浏览the documentation寻找可以帮助我的事件或实用工具类,但到目前为止无济于事。
是否有一些可靠的事件或其他可靠的方法来确定连接已经超时,以便我可以为不会触发拆除事件的流触发此处理?
当我使用适用于iOS的Wowza GoCoder应用程序对视频进行编码时,我在移动设备上丢失连接时首次发现此问题,但我想任何编码器的问题都是相同的。
答案 0 :(得分:1)
在我的Wowza模块中,我有以下模式,到目前为止证明是非常可靠的:
我有一个自定义工作线程,它遍历所有客户端类型。现在,这可以让我跟踪客户,我发现最终所有类型的灾难都会导致客户在不明确的超时后从这些列表中删除。
我认为尝试在您自己的Set
中跟踪(添加/删除)客户端,看看是否更准确。
您还可以尝试查看IMediaStreamActionNotify2
中是否有任何内容被调用。
我已经看到在onStreamCreate(IMediaStream stream)
中调用onStreamDestroy(IMediaStream stream)
和ModuleBase
以防iOS上的GoCoder,我通过调用{将IMediaStreamActionNotify2
的实例附加到流中{1}}
在GoCoder平台上:我不确定它在Android上是否相同,GoCoder Android和iOS版本有根本区别,即流媒体协议本身,导致不同的API调用和行为后端方面。没有在两个平台上进行测试就不能上线..: - )