2013-02-12 634 views
0

在使用FFmpegFrameRecorder從JavaCV JVM的以下消息崩潰:FFmpegFrameRecorder問題

# 
# A fatal error has been detected by the Java Runtime Environment: 
# 
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00000000699d6a64, pid=4076, tid=308 
# 
# JRE version: 7.0_13-b20 
# Java VM: Java HotSpot(TM) 64-Bit Server VM (23.7-b01 mixed mode windows-amd64 compressed oops) 
# Problematic frame: 
# C [avformat-54.dll+0xd6a64] av_read_play+0x4 
# 
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows 
# 
# An error report file with more information is saved as: 
# C:\Users\Sagar Jadhav\Documents\NetBeansWorkspace\OpenCV\hs_err_pid4076.log 
# 
# If you would like to submit a bug report, please visit: 
# http://bugreport.sun.com/bugreport/crash.jsp 
# The crash happened outside the Java Virtual Machine in native code. 
# See problematic frame for where to report the bug. 
# 
Java Result: 1 

的代碼如下:

package com.opencv.windows; 

import com.googlecode.javacv.CanvasFrame; 
import com.googlecode.javacv.FFmpegFrameGrabber; 
import com.googlecode.javacv.FFmpegFrameRecorder; 
import com.googlecode.javacv.OpenCVFrameGrabber; 
import com.googlecode.javacv.cpp.opencv_core; 

public class VideoRecorderDemo 
{ 
    OpenCVFrameGrabber grabber; 
    FFmpegFrameRecorder recorder; 
    CanvasFrame canvasFrame; 

    VideoRecorderDemo() 
    { 
     grabber = new OpenCVFrameGrabber("c:\\sample.mp4"); 
     recorder = new FFmpegFrameRecorder("c:\\sample1.mp4", 2); 
     canvasFrame = new CanvasFrame("Video Recorder Demo");  
     canvasFrame.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE); 

     try 
     { 
      grabber.start(); 

      opencv_core.IplImage image; 
      while((canvasFrame.isVisible()) && (image = grabber.grab()) != null) 
       canvasFrame.showImage(image); 
     } 
     catch(Exception e) 
     { 
      System.out.println("Error : " + e.getMessage()); 
     } 

     init(); 
     startRecording(); 
     stopRecording(); 
    } 

    void init() 
    { 
     try 
     { 
      grabber.start(); 
      recorder.start(); 
     } 
     catch(Exception e) 
     { 
      System.out.println(e.getMessage()); 
     } 
    } 

    void startRecording() 
    { 
     try 
     { 
      opencv_core.IplImage image; 
      while((canvasFrame.isVisible()) && (image = grabber.grab()) != null) 
      { 
       recorder.record(image); 
       canvasFrame.showImage(image); 
      } 
     } 
     catch(Exception e) 
     { 
      System.out.println(e.getMessage()); 
     } 
    } 

    void stopRecording() 
    { 
     try 
     { 
      grabber.stop(); 
      recorder.stop(); 
      canvasFrame.dispose(); 
     } 
     catch(Exception e) 
     { 
      System.out.println(e.getMessage()); 
     } 
    } 

    public static void main(String args[]) 
    { 
     new VideoRecorderDemo(); 
    } 
} 

我使用的OpenCV 2.4.3庫和從zeronoe提供的ffmpeg庫(ffmpeg-20130209-git-969039e-win64-shared)

謝謝

回答