【问题标题】:how to control VLC by java如何通过java控制VLC
【发布时间】:2010-09-22 10:40:09
【问题描述】:

我想在java 中运行一个名为 VLC 的程序并在运行时对其进行控制,例如,如果用户单击 ❚❚►► 按钮,我做一个特定的合适的动作。

我通过这段代码运行VLC

try
{
    Runtime rt = Runtime.getRuntime();
    Process p = rt.exec(VLCProgramAddFile + " udp://@:" + listeningPort);

    OutputStream out = p.getOutputStream();
    InputStream in = p.getInputStream();

    p.waitFor();
    System.out.println("End of VLC");
}
catch (Exception e)
{
    System.out.println("error in running VLC");
}

我听说过 Java 绑定,但我不知道它在这项工作中是如何工作的。

【问题讨论】:

    标签: java vlc vlcj


    【解决方案1】:

    VLCj 是你所追求的——它本质上是一个围绕 libvlc 的直接 Java 包装器。如果你在进程中使用它(特别是如果你在进程中使用多个播放器),你有时会看到 VM 崩溃——这不是 VLCJ 的错,而是 libvlc 和它在下面使用的本机库有一些微妙的线程错误,这些错误暴露了这些问题。

    您可以让它在多个实例上可靠地工作,但要做到这一点,您需要在进程外使用它。请参阅here,了解我最初的尝试。设置起来有点麻烦,但一旦开始,一切似乎都很好。

    【讨论】:

    • 我在运行 VLCj 的过程中遇到了这些零星的 JVM 崩溃。当 VLCj 用完进程时,这些问题会消失吗?我即将尝试让 VLCj 耗尽进程,但如果最终结果也不可靠,我不想努力。
    • @nissemand 如果您在进程中运行一个 VLCJ 实例,这很好,但是多个实例偶尔会崩溃,那么是的 - 这应该会使这些问题消失。如果只有一个实例崩溃,那么问题可能出在其他地方。
    • 我明白了。我一次只运行一个实例,但有很多是按顺序运行的。我会尝试将它们移出进程,看看会发生什么。感谢 berry120 的帮助!
    • 您是否使用进程外实现通过多个实例实现了它?
    • @John 是的,虽然它相当繁琐。
    【解决方案2】:

    您可能正在寻找 VLCJ,这是 VLC 的 java 包装器。它允许您在 Java 应用程序中嵌入 VLC 媒体播放器,从而添加您所有的个人控件。

    (请注意,对于用户应用程序这很好,但 VLCJ 库并不完美,您可以 有几个问题弹出。)

    编辑: 对于我的项目,我已经看到内存泄漏和长时间运行程序的问题(几个小时的多个实例)。尤其是多个实例不能与某些编译选项(默认开启)结合使用。

    【讨论】:

    • 谢谢,我正在尝试学习如何使用 VLCJ,但是有没有办法通过我的程序中的输入/输出流来控制这个被调用的过程?使用 VLCJ 或调用 .exe 文件更好,就像我在程序中使用的那样。请注意,在运行时控制视频对我来说很重要。
    • @Sajad 我只有使用 VLCJ 的经验,至少可以从应用程序启动/停止和暂停,但我认为所有命令都可以工作。我没有将普通 VLC gui 与您自己的应用程序结合使用的经验。我认为如果您想将输出嵌入到您的应用程序中,您需要 VLCJ。
    • 感谢您的宝贵回答。
    • VLC 是跨平台中最好的。
    • @Thirler 我知道很长一段时间,但是......我也遇到了长时间运行 VLCJ 视频的问题。您是否有任何用于处理它们的提示和技巧。我应该考虑哪些调整?
    【解决方案3】:

    根据您最终想要完成的任务,gstreamer Java bindings 值得一看,它可以让您对播放进行非常精细的控制。你可以做转换和一切。他们还有一个简约的视频播放器示例应用程序可以帮助您入门。

    【讨论】:

    • 不要使用 Gstreamer。多年后我终于做到了,我意识到跨平台是多么困难。如果你在 linux 中就可以了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    相关资源
    最近更新 更多