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

时间:2011-12-27 22:02:19

标签: java controls vlc

我目前正在使用vlc套接字远程控制接口播放视听内容的java项目(例如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(暂停)+播放按钮:    发送(“添加[文件路径]”);

    精细

  • 0:00(暂停)+播放按钮:    送( “暂停”);    发送(“添加[文件路径]”);

    精细

  • 0:01(暂停)+播放按钮:    送( “暂停”);    发送(“添加[文件路径]”);

    精细

  • 0:01(未暂停)+播放按钮:    送( “暂停”);    发送(“添加[文件路径]”);

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

是否有一种安全的方法来处理玩家状态,因此没有未定义的行为?我注意到,当vlc自行暂停时,遥控器有时输出一些东西。但是,它似乎不安全,因为它可能会输出一些在此事件之前触发的事件。

谢谢。

2 个答案:

答案 0 :(得分:1)

倒数计时器的粒度是多少?您能否以两倍于最小支持时间单位的间隔对剩余时间进行两次采样?例如,如果是秒,则检查时间,等待一秒钟,然后再次检查。如果时间已经改变,它仍在播放,如果它没有暂停。唯一的缺点是它会为您的应用程序的响应性带来一秒钟的延迟。

答案 1 :(得分:0)

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