bytedeco/javacv

JVM crash when set FFmpegFrameGrabber's image mode to RAW

Open

#2.351 aberto em 6 de set. de 2025

Ver no GitHub
 (0 comments) (0 reactions) (0 assignees)Java (1.583 forks)batch import
help wantedquestion

Métricas do repositório

Stars
 (6.985 stars)
Métricas de merge de PR
 (Nenhuma PRs mesclada em 30d)

Description

I set FFmpegFrameGrabber image mode to raw to avoid recorder call sws_scale when input video's pixel format is yuv420. When i execute code below, the jvm crashed when calling avcodec_send_frame in recordImage function of class FFmpegFrameRecorder. Is there something wrong with my code or is it a limitation of javacv?

        FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(src);
        grabber.setImageMode(FrameGrabber.ImageMode.RAW);
        grabber.start();

        FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(dst, grabber.getImageWidth(), grabber.getImageHeight()
            , grabber.getAudioChannels());

        recorder.setFormat("hls");
        recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
        recorder.setFrameRate(grabber.getFrameRate());
        recorder.setPixelFormat(AV_PIX_FMT_YUV420P); 
        recorder.setAudioCodec(avcodec.AV_CODEC_ID_AAC);
        recorder.setSampleFormat(avutil.AV_SAMPLE_FMT_FLTP);
        recorder.setSampleRate(grabber.getSampleRate());

        recorder.setVideoOption("crf", "24");
        recorder.setVideoOption("preset", "veryfast"); 

        recorder.setOption("hls_list_size", "0");
        recorder.setOption("hls_time", "15");
        recorder.setOption("hls_playlist_type", "vod");

        recorder.start();

        try {
            Frame frame;

            while ((frame = grabber.grab()) != null) {
                if (frame.type == Frame.Type.VIDEO || frame.type == Frame.Type.AUDIO) {
                    recorder.record(frame);
                }
            }

            System.out.println(System.currentTimeMillis() - begin);
        } finally {
            grabber.close();

            recorder.close();
        }

hs_err_pid63236.log

Guia do colaborador