获取VLC远程控制界面播放器状态



我目前在一个java项目,使用vlc套接字远程控制接口来播放视听内容(例如vlc -I rc --rc-host=localhost:[portnumber])。这个接口导致了一些特殊的情况,看起来处理起来很复杂:

  • 根据vlc远程控制帮助,暂停命令是一个切换功能,所以你

  • add命令只有在当前视频没有暂停的情况下才会开始视频

  • is_playing命令始终输出1,无论是否暂停status命令没有说明是否暂停

客户端的约束是视频需要在最后一帧暂停。幸运的是,有一个参数可以处理它:--play-and-pause

问题如下。如果vlc到达最后一帧并自己暂停视频,我怎么知道呢?现在,我使用get_time只是希望考虑到视频暂停,如果倒计时等于0。然而,vlc在0:01暂停了视频本身,迫使我也将0:01作为结束值。这将导致当用户开始另一个视频时出现故障,而在最后一帧之前实际上还有一秒钟,因为0:01检查认为它是暂停的,而它不是。下面是发生的事情的摘要:

  • 0:20(未暂停)+播放键:发送("添加[filepath]");

  • 0:00(暂停)+播放键:发送("暂停");发送("添加[filepath]");

  • 0:01(暂停)+播放键:发送("暂停");发送("添加[filepath]");

  • 0:01(未暂停)+播放键:发送("暂停");发送("添加[filepath]");

    意外行为:它不会播放,因为它暂停了,我们不知道它

是否存在一种安全的方法去处理玩家状态从而避免未定义的行为?我注意到,当vlc本身暂停时,远程控制控制台有时会输出一些东西。然而,它似乎不安全,因为它可能输出在此事件之前或之后触发的一些事件。

谢谢。

倒计时计时器的粒度是多少?你能抽样剩下的时间两次,间隔等于支持的最小时间单位吗?例如,如果是秒,你检查时间,等一秒钟,然后再检查一次。如果时间改变了,它还在播放,如果没有,它就暂停了。唯一的缺点是它会给应用程序的响应性带来一秒钟的延迟。

为什么不阻止玩家到达00:01?例如,如果倒计时= 00:02,从下一个开始。

最新更新