1.主要就是拿到每一帧的数据,然后把时间标记打到每一帧图片上即可,代码如下:
其中SLotRecvImgData接收的参数是每一帧图片的字节数组
cpp
void ShowImgDlg::SLotRecvImgData(QByteArray byteArr)
{
QImage image;
if (image.loadFromData(byteArr)) {
// 获取当前时间
QDateTime dateTime = QDateTime::currentDateTime();
QString timestamp = dateTime.toString("yyyy-MM-dd hh:mm:ss");
// 在图片上绘制时间戳
drawTimestampOnImage(image, timestamp);
QPixmap pixmap = QPixmap::fromImage(image);
ui->label->setPixmap(pixmap);
ui->label->setFixedSize(pixmap.size());
}
}
void ShowImgDlg::drawTimestampOnImage(QImage &image, const QString ×tamp)
{
QPainter painter(&image);
painter.setPen(Qt::white); // 设置画笔颜色为白色
painter.setFont(QFont("Arial", 12)); // 设置字体和大小
// 计算时间戳的位置
int x = 10;
int y = image.height() - 20;
// 绘制时间戳
painter.drawText(x, y, timestamp);
}
其他打时标的方法可以参考下述链接:
【Qt+FFmpeg】给视频添加时间水印_ffmpeg添加时间水印-CSDN博客
麒麟银河操作系统V10部署ffmpeg(也能用于Linux系统)_银河麒麟 ffmpeg-CSDN博客
基于FFMPEG水印添加---avfilter库-CSDN博客