我在 wowza 流媒体服务器上运行流媒体。但我无法找到流媒体的确切持续时间。
我正在运行音乐网站,我们在用户本机播放器上播放流媒体。对于我们的跟踪,我们希望跟踪用户收听音频的确切持续时间。
我在 wowza 流媒体服务器上运行流媒体。但我无法找到流媒体的确切持续时间。
我正在运行音乐网站,我们在用户本机播放器上播放流媒体。对于我们的跟踪,我们希望跟踪用户收听音频的确切持续时间。
正如其他人在评论中所说,无法确定确切的流式传输时间。
不同的客户端在处理流方面有不同的行为。考虑浏览器客户端可以预先缓冲数据的情况。如果用户进入一个页面并且浏览器开始下载音频数据,服务器会认为客户端正在监听流,而实际上数据只是在内存中。当用户确实开始播放音频时,比如 1 分钟后,服务器现在认为他们已经听了一分钟了。当用户进入新页面时,与服务器的连接断开,在断开连接的同时停止音频。
在其他情况下,媒体播放器实际上可以在中途暂停,在断开连接之前缓冲数据几秒钟。
您可以做的最好的事情是使用客户端分析,但这并非在所有情况下都是可能的,因为您并不总是可以控制客户端,而且并非所有客户端都有能力。
你不能在服务器(wowza)端这样做。好吧,您可以,但由于缓冲以及 HTTP 流协议的一般工作方式,数据将不准确。
但是,您仍然可以在客户端使用某种 javascript 来聚合这些数据。
您必须监听播放器事件,例如播放、暂停、停止,甚至搜索。大多数网络播放器都有回调来跟踪这些事件。然后收集数据并将它们发送到您的数据库进行存储。
要获得流的持续时间,您必须开发一个自定义模块。有一个名为 onMediaStreamDestroy 的事件,使用 IMediaStream 对象可以获得持续时间。公共类 MyMediaStreamListener 实现 IMediaStreamNotify { @Override public void onMediaStreamDestroy(IMediaStream stream) { stream.length(); // 这用于获取视频的长度(以秒为单位) } }