使用pkmpi例程修改为录制视频保存本地后,什么方法可以在画面加入时间戳

  • 牛腩焖薯仔 wrote: 2024-06-06 9:50 // 获取当前时间
    time_t now = time(0);
    struct tm tstruct;
    char timebuf[80];
    tstruct = *localtime(&now);
    strftime(timebuf, sizeof(timebuf), "%Y-%m-%d %H:%M:%S", &tstruct);

    // 在帧上添加时间戳
    cv::putText(frame, timebuf, cv::Point(10, 30), cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(0, 255, 0), 2);

    尝试了这种方法但前五秒又时间戳 后面好像被画面覆盖了
    您好,根据您提供的代码片段来看您似乎是打算使用opencv图像处理的方式来添加时间戳,这种方式会导致无论什么情况下每一帧都需要被Opencv图像处理才能在视频流中显示时间,而进行视频保存时一般都需要进行编码,有关键帧和参考帧,如果只是在关键帧上进行图像处理就可能出现您遇到的情况,其它参考帧没有被Opencv作用到。由于没有完整的代码上下文,我无法确定您处理的frame的来源,如果frame能锁定为I帧的话或许可以解决问题。

    当然,添加时间戳比较常见的方案还是添加OSD的方式来实现,您可以在RKMPI的VPSS或VENC组件上添加,OSD单独进行渲染大大节省了芯片的资源,与视频流分开也能避免相互影响。