[RVMedia] 在捕获视频时画面中叠加自绘内容

RVCamViewer 是 RVMedia 输出视频的对象,它提供了一个 OnPaint 事件,我们可以在其中控制要呈现给用户的内容。

下面的例子,我就在画面的右上角呈现了已经录制的时间,其中用到的 RollupTime 函数,请到 QString.pas 里找。

procedure TfrmVideoRecord.RVCamView1Paint(Sender: TObject; VideoFrame: TBitmap;
ACanvas: TCanvas; var CanDrawFrame: Boolean);
var
  S: String;
  ARecordedTime: Cardinal;
  R: TRect;
begin
  R := RVCamView1.FrameRect;
  ACanvas.StretchDraw(R, VideoFrame);
  CanDrawFrame := False;
  if FUsedTime <> 0 then
  begin
    ARecordedTime := GetTickCount - FUsedTime;
    if ARecordedTime >= 1000 then
    begin
      S := '已录制时长:' + RollupTime(ARecordedTime div 1000);
      ACanvas.Brush.Style := bsClear;
      ACanvas.TextRect(R, S, [tfRight]);
    end;
  end;
end;

最终效果:

rvoverlay


Warning: Undefined variable $post_id in /www/qdac.cc/wp-content/themes/minty/functions.php on line 460
分享到:

0 条评论

沙发空缺中,还不快抢~