bytedeco/javacv

How to record a video that each frame has watermark.

Open

#1,064 opened on Sep 27, 2018

View on GitHub
 (7 comments) (0 reactions) (0 assignees)Java (1,583 forks)batch import
enhancementhelp wanted

Repository metrics

Stars
 (6,985 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

I have using FFmpegFrameRecorder to write video. I want to add watermark to Frame, But load image png(transparent) and using addWeighted to add. But opaque of the image has lost and image after loaded incorrectly.

opencv_core.Mat videoFrame = opencv_imgcodecs.imread(fileName);
opencv_core.Mat borderFrame =  mFrameBorder.getMat();
destFrame = new opencv_core.Mat(videoFrame.size(), videoFrame.type());
opencv_core.addWeighted(videoFrame, 1.0, borderFrame, 1.0, 0, destFrame, -1);

I have using FFmpegFrameFilter. But not effect.

// Filter adds WaterMark
                String watermark = "movie="+mFrameBorder.getFilePath()+" [watermark];[in][watermark]overlay=W-w-15:15:format=rgb[out]";//[logo];[in][logo]overlay=0:0:1:format=rgb [out]
                frameFilter = new FFmpegFrameFilter(watermark, 540, 960);
                frameFilter.setPixelFormat(avutil.AV_PIX_FMT_BGR24);
                frameFilter.start();

            for (int i = 0; i < frameCount; i++) {
                    frameFilter.push(videoFrame);
                    recorder.record(frameFilter.pull());
            }
  • Because In OpenCV has not support load png transparent.

Contributor guide