I am trying to add watermark on video file using FFmpegFrameFilter but watermark is not adding on output video. also output video not correct getting only one second video where video length is 8 seconds. please help me. here my code
class FinishWaterMarkTask extends ProgressDialogTask<Void, Integer, Void> {
private FFmpegFrameGrabber VIDEO_GRABBER;
private FFmpegFrameRecorder videoRecorder;
private FFmpegFrameFilter filter;
@Override
protected Void doInBackground(Void... params) {
Frame tempVideoFrame;
try {
VIDEO_GRABBER.start();
String OutputPath = path + outputVideo;
initVideoRecorder(OutputPath);
filter.start();
while (VIDEO_GRABBER.grab() != null) {
tempVideoFrame = VIDEO_GRABBER.grabImage();
if (tempVideoFrame != null) {
filter.push(tempVideoFrame);
tempVideoFrame = filter.pull();
videoRecorder.record(tempVideoFrame);
}
}
videoRecorder.stop();
filter.stop();
videoRecorder.release();
VIDEO_GRABBER.stop();
VIDEO_GRABBER.release();
} catch (FrameGrabber.Exception e) {
e.printStackTrace();
} catch (FrameRecorder.Exception e) {
e.printStackTrace();
} catch (FrameFilter.Exception e) {
e.printStackTrace();
}
return null;
}
private void initVideoRecorder(String path) {
try {
VIDEO_GRABBER = new FFmpegFrameGrabber(mVideo.getAbsolutePath());
String imgPath = audioPath + "jodelicon.png";
filter = new FFmpegFrameFilter("movie=" + imgPath + " [logo];[in][logo]overlay=0:0:1:format=rgb [out]", VIDEO_GRABBER.getImageWidth(), VIDEO_GRABBER.getImageHeight());
videoRecorder = FFmpegFrameRecorder.createDefault(path, VIDEO_GRABBER.getImageWidth(), VIDEO_GRABBER.getImageHeight());
videoRecorder.setAudioChannels(VIDEO_GRABBER.getAudioChannels());
videoRecorder.setFrameRate(VIDEO_GRABBER.getFrameRate());
videoRecorder.start();
} catch (FrameRecorder.Exception e) {
e.printStackTrace();
}
}
}