bytedeco/javacv

How to record a video that each frame has watermark.

Open

#1,064 opened on 2018年9月27日

GitHub で見る
 (7 comments) (0 reactions) (0 assignees)Java (1,583 forks)batch import
enhancementhelp wanted

Repository metrics

Stars
 (6,985 stars)
PR merge metrics
 (30d に merged PR はありません)

説明

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.

コントリビューターガイド