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

How to calculate exact streaming duration time in web?

本文关键字:流媒体 持续时间 网络 何计算 计算      更新时间:2023-09-26

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

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

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

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

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

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

您不能在服务器(wowza)端执行此操作。当然可以,但由于缓冲和HTTP流协议的一般工作方式,数据不会准确。

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

你必须倾听玩家事件,比如播放、暂停、停止,甚至寻找。大多数网络播放器都有回调功能来跟踪这些事件。然后收集数据并将其发送到数据库进行存储。

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