我目前在一个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,从下一个开始。