bytedeco/javacv

How to record a video that each frame has watermark.

Open

#1064 aperta il 27 set 2018

Vedi su GitHub
 (7 commenti) (0 reazioni) (0 assegnatari)Java (1583 fork)batch import
enhancementhelp wanted

Metriche repository

Star
 (6985 star)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

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.

Guida contributor