立即获取从VLC命令行播放信息

Kan*_*uly 1 java command-line vlc

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

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

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

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

sav*_*nto 5

显然,VLC附带了一个小型Http服务器,可用于向播放器发送命令.您通过发布% vlc -I http (--http-src /directory/ --http-host host:port)where --http-src--http-host是可选的来启动服务器.只使用vlc -I httpVLC侦听127.0.0.1:8080我的系统.

然后,您可以通过发出GET请求来检索播放器状态和跟踪信息,该请求http://127.0.0.1:8080/requests/status.xml返回如下所示的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>
Run Code Online (Sandbox Code Playgroud)

从音频文件中存在的标签填写曲目信息的位置.

您甚至可以使用此方法向VLC发送命令以控制播放.以下是完整的Http API参考:VLC Http请求.

您可以使用一个可用于Java的Http客户端(例如Apache HttpClient)与Http服务器连接,并且您可以使用类似JAXP的东西解析从请求返回的xml ,但我确信这两者都存在替代方案. .