java - 从 VLC 命令行获取正在播放信息

标签 java command-line vlc

我想知道是否可以从命令行检索 VLC 正在播放的信息(文件名、播放时间等)。

然后我想使用 Java 在某处使用此信息。

一种可能是使用 JNA,但不确定它是如何工作的。

我到处搜索,但它只告诉我如何从命令行启动文件。

最佳答案

显然 VLC 带有一个小型 Http 服务器,可用于向播放器发送命令。您通过发出 % vlc -I http (--http-src/directory/--http-host host:port) 启动服务器,其中 --http-src--http-host 是可选的。仅使用 vlc -I http VLC 在我的系统上监听 127.0.0.1:8080

然后,您可以通过向 http://127.0.0.1:8080/requests/status.xml 发出 GET 请求来检索播放器状态和跟踪信息,该请求返回如下所示的 xml 文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
...
<time>75</time>
<volume>512</volume>
<length>326</length>
<rate>1</rate>
...
<state>playing</state>
<position>0.23139409720898</position>
<information>
    <category name="meta">
        <info name="artwork_url">file:///path/to/art/work</info>
        <info name="genre">Genre</info>
        <info name="album">Album Name</info>
        <info name="publisher">Publisher</info>
        <info name="title">Track Title</info>
        <info name="track_number">1</info>
        <info name="filename">File Name</info>
        <info name="artist">Artist Name</info>
    </category>
    <category name="Stream 0">
        <info name="Bitrate">128 kb/s</info>
        <info name="Type">Audio</info>
        <info name="Channels">Stereo</info>
        <info name="Sample rate">44100 Hz</info>
        <info name="Codec">MPEG Audio layer 1/2/3 (mpga)</info>
    </category>
</information>
<stats>
...
</stats>
</root>

根据音频文件中存在的标签填写轨道信息的位置。

您甚至可以使用此方法向 VLC 发送命令来控制播放。这是完整的 Http API 引用:VLC Http Requests .

您可以使用可用于 Java 的 Http 客户端之一与 Http 服务器交互,例如 Apache HttpClient ,您可以使用类似 JAXP 的方式解析从您的请求返回的 xml ,尽管我确信这两种方法都存在。

关于java - 从 VLC 命令行获取正在播放信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23436861/

相关文章:

java - 为什么 Spring UriComponentsBuilder 抛出 java.lang.IllegalArgumentException?

java - 如何允许java程序预定义数量的条目

java - live555 demux 警告 : no data received in 10s. 切换到 TCP

python - 启动 VLC 会停止 python 脚本的其余部分

java - 将 JSlider 值更改为 JSpinner 值,反之亦然

java.lang.IllegalArgumentException : Not supported: indent-number 异常

java - HashMap内存效率

linux - 如何在不通过 telnet 使用管道的情况下串行传递命令

hadoop - hdfs-计数 : Illegal option -v

C# Vlc ActiveX 播放rtsp流