如何计算网络中的确切流媒体持续时间?

时间:2014-09-16 11:45:39

标签: javascript streaming audio-streaming wowza internet-radio

我在wowza流媒体服务器上运行流媒体。但我无法找到流媒体的确切持续时间。

我正在运行音乐网站,我们在用户原生播放器上播放流媒体。对于我们的跟踪,我们希望跟踪用户对音频监听的确切持续时间。

3 个答案:

答案 0 :(得分:1)

正如其他人在评论中所说,无法确定准确的流媒体时间。

不同的客户端在处理流的方式上有不同的行为。考虑浏览器客户端可以预缓冲数据的情况。如果用户进入页面并且浏览器开始下载音频数据,则服务器将认为客户端正在侦听流,而实际上数据只是在内存中。当用户确实开始播放音频时,比如1分钟后,服务器现在认为他们已经听了一分钟。当用户转到新页面时,将断开与服务器的连接,在断开连接的同时停止音频。

在其他情况下,媒体播放器实际上可以在中途暂停,在断开连接之前将数据缓冲几秒钟。

您可以做的最好的事情就是使用客户端分析,但在所有情况下都不可能,因为您并不总是能够控制客户端,并且并非所有客户端都能够。

答案 1 :(得分:0)

您不能在服务器(wowza)端执行此操作。可以,但是由于缓冲以及HTTP流协议的一般工作原理,数据将不准确。

但是,您仍然可以在客户端使用某种JavaScript来聚合这些数据。

您必须聆听播放器事件,例如-播放,暂停,停止甚至搜寻。大多数网络播放器都有回调来跟踪这些事件。然后收集数据并将其发送到您的数据库进行存储。

答案 2 :(得分:-1)

要获得流的持续时间,您必须开发自定义模块。有一个名为onMediaStreamDestroy的事件,使用IMediaStream对象可以获得持续时间。    公共类MyMediaStreamListener实现IMediaStreamNotify    {        @覆盖        public void onMediaStreamDestroy(IMediaStream stream)        {        stream.length(); //这用于以秒为单位获取视频的长度        }    }