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

标签 java controls vlc

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

  • 根据vlc远程控制帮助,暂停命令是一个切换功能,因此您可以 必须跟踪玩家的当前状态。

  • 仅当当前视频未暂停时,add 命令才会启动视频。

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

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

问题如下。如果 vlc 到达最后一帧并自行暂停视频,我怎么知道呢?目前,我使用 get_time 希望在倒计时等于 0 时简单地考虑视频暂停。但是,vlc 在 0:01 处暂停视频本身,迫使我也将 0:01 视为结束值。当用户在最后一帧之前确实还剩下一秒时开始另一个视频时,这会导致出现故障,因为 0:01 检查将其视为已暂停,而实际上并未暂停。以下是所发生情况的摘要:

  • 0:20(未暂停)+ 播放按钮: send("添加[文件路径]");

    很好

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

    很好

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

    很好

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

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

是否有一种安全的方法来处理玩家状态,以便不存在未定义的行为?我注意到,当 vlc 自行暂停时,远程控制台有时会输出一些内容。但是,这似乎不安全,因为它可能会输出一些在此事件之前或之后触发的事件。

谢谢。

最佳答案

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

关于java - 获取VLC远程控制界面播放器状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8649756/

相关文章:

python - 如何通过OpenCV处理VLC UDP流

Android 从 VLC/ffmpeg 接收 RTP/UDP 音频流

java - 在没有服务器的情况下连接到 Intellij Ultimate 中的本地 MySQL 数据库?

java - 用 Kotlin 编写的 Android 库,为 Java 应用程序提供支持

winforms - 检测 Winforms 中的 gdi/用户处理程序泄漏

javascript - 如何更改HTML5音频中的播放/按钮图像

java - 如何使用 ",/*,\* 设置 java 分隔符

java - 如何删除当前显示的条形图(jfreechart)并在eclipse RCP插件的同一 View 中显示新的条形图?

c# - 为什么我的 CheckBox.Checked 属性会重置?

iphone - 使用 XCode 在 macOsX 上从 git.videolan.org 存储库构建 MobileVLCKit