下面的代码段是从视频文件中提取音频。工作环境是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。
上述错误仍然存在。有人可以修复错误吗?
答案 0 :(得分:0)
您提供的链接是关于为BSOD配置minidumps,这是“蓝屏死机”的缩写。这是Windows内核的崩溃,Java应用程序(在用户模式下运行)可能无法生成。
要收集用户模式转储,您可以配置Windows错误报告(WER)LocalDumps。另请参阅this answer关于使用它的一些常见陷阱。
但即使你这样做,Java也会执行自己的异常处理。要禁用该异常处理并让Windows(WER)处理错误,您需要使用命令行开关启动Java
-XX:+UseOSErrorReporting
但是,有一种比LocalDumps
和UseOSErrorReporting
更简单的方法。 Java也知道命令行开关
-XX:+CreateMinidumpOnCrash
恕我直言更容易使用。
错误代码0xC0000005
是访问冲突,是NullReferenceException的本机/ JNI术语。
有人可以修复错误吗?
只有Xuggler的开发者才能做到这一点。