Xuggler中的访问冲突 - 无法写入minidump

时间:2014-10-15 09:52:39

标签: java eclipse xuggler minidump

下面的代码段是从视频文件中提取音频。工作环境是Windows 7上的Eclipse Luna。

import com.xuggle.mediatool.*;
import com.xuggle.xuggler.ICodec;

public class VideoToAudio{

    public void convertVideoToAudio(){
        IMediaReader reader = ToolFactory.makeReader("D://vid.mp4");
        IMediaWriter writer = ToolFactory.makeWriter("D://a.mp3",reader);

        int sampleRate = 44100;
        int channels = 1;

        writer.addAudioStream(0, 0, ICodec.ID.CODEC_ID_MP3, channels, sampleRate);
        while (reader.readPacket() == null);
    }

    public static void main(String [] args){
        VideoToAudio vta = new VideoToAudio();
        vta.convertVideoToAudio();
    }
}

为代码生成的错误如下:

A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000006ee76520, pid=13968, tid=7220
#
# JRE version: Java(TM) SE Runtime Environment (8.0_20-b26) (build 1.8.0_20-b26)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.20-b23 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C  [xuggle4458410956560120581.dll+0x736520]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows

我一个接一个地执行了一系列操作来修复错误:

  • 配置Windows以查看link后创建MiniDump文件

  • 从工作区删除元数据文件夹,再次导入项目到eclipse。

上述错误仍然存​​在。有人可以修复错误吗?

1 个答案:

答案 0 :(得分:0)

您提供的链接是关于为BSOD配置minidumps,这是“蓝屏死机”的缩写。这是Windows内核的崩溃,Java应用程序(在用户模式下运行)可能无法生成。

要收集用户模式转储,您可以配置Windows错误报告(WER)LocalDumps。另请参阅this answer关于使用它的一些常见陷阱。

但即使你这样做,Java也会执行自己的异常处理。要禁用该异常处理并让Windows(WER)处理错误,您需要使用命令行开关启动Java

-XX:+UseOSErrorReporting

但是,有一种比LocalDumpsUseOSErrorReporting更简单的方法。 Java也知道命令行开关

-XX:+CreateMinidumpOnCrash

恕我直言更容易使用。

错误代码0xC0000005是访问冲突,是NullReferenceException的本机/ JNI术语。

  

有人可以修复错误吗?

只有Xuggler的开发者才能做到这一点。