首页 > 解决方案 > 如何在 vlcj-4 中更改视频

问题描述

我正在尝试更改 vlcj 正在播放的视频。但是当它应该切换视频时,应用程序就会关闭。它不会抛出任何错误,它只是退出。这是我的代码:

import javax.swing.JFrame;
import java.awt.event.*;

import uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent;

public class Main {

    private final JFrame frame;

    private final EmbeddedMediaPlayerComponent mediaPlayerComponent;

    public static void main(String[] args) {
        new Main();
    }
    public Main() {
        frame = new JFrame("My First Media Player");
        frame.setBounds(100, 100, 600, 400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                mediaPlayerComponent.release();
                System.exit(0);
            }
        });

        mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
        frame.add(mediaPlayerComponent);
        frame.setVisible(true);
        
        mediaPlayerComponent.mediaPlayer().submit(new Runnable(){
            @Override
            public void run() {
                mediaPlayerComponent.mediaPlayer().media().play("E:\\Somevideo1.mkv");
            }
        });

        try {
            Thread.sleep(5000);
        } catch (InterruptedException e1) {
        }


        mediaPlayerComponent.mediaPlayer().submit(new Runnable(){
            @Override
            public void run() {
                System.out.println("Reached 1");
                mediaPlayerComponent.mediaPlayer().media().play("E:\\Somevideo2.mkv");
                System.out.println("Reached 2");
            }
        });

    }
}

它打印“到达 1”,但应用程序在到达“到达 2”之前退出。

编辑:所以这似乎是一个文件类型问题,它只会在上一个视频是 .mkv 视频时崩溃。当从 mp4 更改为 mkv 时,它工作得很好,但是当从 mkv 更改为另一个 mkv 或 mp4 时,它会崩溃。

编辑 2:我尝试从 vsc 切换到 IntelliJ,现在我收到错误消息:“进程完成,退出代码 -1073741819(0xC0000005)”

在互联网上我能找到这个:https ://groups.google.com/g/microsoft.public.vc.debugger/c/_n9juoV-5m8?pli=1

“您所看到的是以下场景的典型情况:

  1. 一个线程耗尽了它的堆栈空间;引发 EXCEPTION_STACK_OVERFLOW 异常 (0xC00000FD)。

  2. 一个线程吞下 EXCEPTION_STACK_OVERFLOW 并继续执行。

  3. 在下一次尝试增加堆栈时,系统控制,发出 EXCEPTION_ACCESS_VIOLATION (0xC0000005) 异常并立即终止进程 - 没有任何 GUI 消息!

现在,这种情况适用于从 4.0 到 XP 的所有 WinNT 系列。但是,我在某处读到它,现在 Vista 和更高版本向用户显示了一些错误消息。无论如何,该过程当场终止。"

但这并不能改变它不起作用的事实。我也有机会在多台 PC 上尝试它并且发生相同的错误,所以这不是 PC 相关的问题。

编辑 3:我尝试使用 libVLCSharp 官方绑定制作 C# WPF 应用程序,但我得到了完全相同的错误。

编辑4:我尝试使用--verbose = 2,但是当它应该更改时没有打印,只有相同:“程序'[12156] VLCSharpTest.exe'已退出,代码为-1073741819(0xc0000005)'访问冲突'。 " 错误

标签: javaswingvideoawtvlcj

解决方案


推荐阅读