用Java替换AVI中的帧

时间:2018-07-12 17:59:47

标签: java ffmpeg javacv

我正在录制一些屏幕录像,而我的废话录音机(Camtasia)在每个开始时或开始时录制了约2000个视频,并带有短暂的黑色闪光(2-3帧)。

我正在寻找一种用FFmpeg自动替换每个视频中的黑色帧的方法,目前我可以检测出哪些帧是黑色的。

我现在遇到的问题是:如何在AVI视频中用帧号X-1的内容替换帧号X ?并不是要缩短视频,而只是要就地替换帧。

这是我到目前为止所拥有的:

FFmpegFrameGrabber g = new FFmpegFrameGrabber("res/video.avi");
g.start();

FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(new FileOutputStream(new File("res/video_out.avi")), g.getImageWidth(), g.getImageHeight(), 2);

recorder.setFormat("avi");
recorder.setPixelFormat(AV_PIX_FMT_YUV420P);
recorder.setFrameRate(30);
recorder.setVideoCodec(AV_CODEC_ID_H264);
recorder.setVideoQuality(10);
recorder.setSampleFormat(AV_SAMPLE_FMT_FLTP);
recorder.setSampleRate(48000);
recorder.setAudioCodec(AV_CODEC_ID_AAC);
recorder.setAudioQuality(10);

g.setFrameNumber(1);
recorder.setFrameNumber(2);
recorder.record(g.grab());

g.close();
recorder.close();
recorder.release();

我又得到了一个空帧(甚至不是黑色)的视频,所以我可能在这里弄乱了东西。

是否有使用FFmpeg的经验?

0 个答案:

没有答案