Wowza流时间测量,不会发送其他线程

时间:2015-08-20 17:24:57

标签: java multithreading wowza

我正在尝试编写模块,用于监控用户观看流的时长。这不是直播,而是视频点播。

我的问题是什么是最有效的方法。我走了这条路:

创建实现IMediaStreamActionNotify2的类,然后当触发onPlay事件时,我将创建新线程,该线程将定期检查自流开始以来经过的时间并更新duration变量。

这是我决定运行其他线程的方式:

BalanceTimerMonitor btm = new BalanceTimerMonitor(...);

ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.scheduleAtFixedRate(btm, 0, 5, TimeUnit.SECONDS);

BalanceTimerMonitor实现Runnable

现在所有这些都有效,但我担心为每个流创建的新线程数量,因为我假设每个流已经作为主wowza应用程序的单独线程运行。这大量的线程会减慢我的服务器吗?还有另一种更优雅的测量流持续时间的方法吗?

1 个答案:

答案 0 :(得分:0)

我的方法是我有一个循环连接客户端的单个线程,Wowza API允许我查询每个连接客户端的已用时间。我在另一个项目中使用相同的技巧,但在这种情况下,我不会处理玩家的身份。您可以使用IClient.getTimeRunningSeconds()来获取时间,而不是自己管理它。希望它有所帮助!