-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Open
Labels
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();
}
Reactions are currently unavailable