Windows平台RTSP|RTMP播放器如何叠加OSD文字

本文涉及的产品
视觉智能开放平台,图像通用资源包5000点
视觉智能开放平台,视频通用资源包5000点
视觉智能开放平台,分割抠图1万点
简介: 做Windows平台RTSP|RTMP播放器的时候,特别是多路播放场景下,开发者希望可以给每一路RTSP或RTMP流添加个额外的OSD台标,以区分不同的设备信息(比如添加摄像头所在位置),本文主要探讨,如何动态添加OSD台标。

技术背景

我们在做Windows平台RTSP|RTMP播放器的时候,特别是多路播放场景下,开发者希望可以给每一路RTSP或RTMP流添加个额外的OSD台标,以区分不同的设备信息(比如添加摄像头所在位置),本文主要探讨,如何动态添加OSD台标。

技术实现

以大牛直播SDK的C#的RTSP|RTMP播放demo为例,分享下设计实现流程。选中“设置台标”复选框,在player窗口左上角显示“叠加字符展示”,具体内容、坐标可自定义,如果需要关闭台标,可以随时关闭:

image.gif

实现代码如下:

/*
 * SmartPlayerForm.cs
 * Created by daniusdk.com on 2017/04/19.
 * WeChat: xinsheng120
 */
private void DrawOSD(string draw_text)
{
    // gdi 绘制的话,文本请自己绘制
    if (is_gdi_render_)
        return;
    if (player_handle_ == IntPtr.Zero)
        return;
    if (draw_text == null || draw_text.Length < 1)
    {
        NTSmartPlayerSDK.NT_SP_SetRenderARGBLogo(player_handle_, IntPtr.Zero, 0, 0, 0, 0, 0, 0, 0);
        return;
    }
    Graphics graphics = this.CreateGraphics();
    SolidBrush solid_brush = new SolidBrush(Color.FromArgb(255, 255, 255));
    graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
    SizeF text_size = new SizeF();
    text_size = graphics.MeasureString(draw_text, this.Font);
    int image_w = (int)text_size.Width + 4;
    int image_h = (int)text_size.Height + 4;
    image_w = (int)ByteAlign((UInt32)image_w, 4);
    image_h = (int)ByteAlign((UInt32)image_h, 4);
    Bitmap bmp = new Bitmap(image_w, image_h, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
    Graphics g = Graphics.FromImage(bmp);
    g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
    float left = image_w / 2 - text_size.Width / 2;
    float top = image_h / 2 - text_size.Height / 2;
    g.DrawString(draw_text, this.Font, solid_brush, left, top);
    Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
    System.Drawing.Imaging.BitmapData bmp_data = bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly, bmp.PixelFormat);
    IntPtr ptr = bmp_data.Scan0;
    int strdie = Math.Abs(bmp_data.Stride);
    NTSmartPlayerSDK.NT_SP_SetRenderARGBLogo(player_handle_, ptr, strdie, bmp_data.Width,
        bmp_data.Height, 6, 6, bmp_data.Width, bmp_data.Height);
    // Unlock the bits.
    bmp.UnlockBits(bmp_data);
}
}

image.gif

总结

Windows平台RTSP|RTMP播放器动态添加OSD文字台标,在实时监控场景下,非常实用,特别是多路场景,以上是大概的实现思路,可能还有开发者说,如果是添加的OSD文字台标,想录制下来,怎么办?实际上,我们也有分享过,可以把播放端解码后的YUV数据回调上来,投递到推送模块,然后,OSD文字水印,以图层的形式添加进去,录像即可,感兴趣的开发者,可以单独跟我沟通探讨。

相关文章
|
9月前
|
XML C# 数据格式
掌握了在Windows平台上查看DLL依赖的方法
掌握了在Windows平台上查看DLL依赖的方法
1249 4
|
2月前
|
安全 前端开发 Linux
Immunity CANVAS Professional 7.27 (macOS, Linux, Windows) - 渗透测试和漏洞利用平台
Immunity CANVAS Professional 7.27 (macOS, Linux, Windows) - 渗透测试和漏洞利用平台
100 3
Immunity CANVAS Professional 7.27 (macOS, Linux, Windows) - 渗透测试和漏洞利用平台
|
4月前
|
固态存储 C++ 计算机视觉
Windows平台GIMP 2.10下载教程:零基础入门高级图像编辑
GIMP(GNU Image Manipulation Program)是一款开源跨平台图像编辑工具,支持图层管理、高级修图、色彩校正等功能,广泛应用于平面设计和照片修复。其优势包括全功能免费、插件生态丰富(600+扩展插件)、硬件要求低(1GB内存即可流畅运行)。本文详细介绍GIMP的软件定位、安装流程、首次配置及常见问题解答,帮助用户快速上手并充分利用其强大功能。
|
9月前
|
NoSQL Shell MongoDB
Windows 平台安装 MongoDB
10月更文挑战第10天
226 0
Windows 平台安装 MongoDB
|
9月前
|
并行计算 开发工具 异构计算
在Windows平台使用源码编译和安装PyTorch3D指定版本
【10月更文挑战第6天】在 Windows 平台上,编译和安装指定版本的 PyTorch3D 需要先安装 Python、Visual Studio Build Tools 和 CUDA(如有需要),然后通过 Git 获取源码。建议创建虚拟环境以隔离依赖,并使用 `pip` 安装所需库。最后,在源码目录下运行 `python setup.py install` 进行编译和安装。完成后即可在 Python 中导入 PyTorch3D 使用。
868 0
|
2月前
|
安全 数据安全/隐私保护 虚拟化
Windows Server 2022 中文版、英文版下载 (2025 年 5 月更新)
Windows Server 2022 中文版、英文版下载 (2025 年 5 月更新)
194 2
|
4月前
|
Unix 虚拟化 Windows
Windows Server 2025 中文版、英文版下载 (2025 年 3 月更新)
Windows Server 2025 中文版、英文版下载 (2025 年 3 月更新)
226 4
Windows Server 2025 中文版、英文版下载 (2025 年 3 月更新)
|
4月前
|
安全 数据安全/隐私保护 虚拟化
Windows Server 2022 中文版、英文版下载 (2025 年 3 月更新)
Windows Server 2022 中文版、英文版下载 (2025 年 3 月更新)
278 4
Windows Server 2022 中文版、英文版下载 (2025 年 3 月更新)
|
2天前
|
安全 Cloud Native 数据中心
Windows Server 2019 中文版、英文版下载 (2025 年 7 月更新)
Windows Server 2019 中文版、英文版下载 (2025 年 7 月更新)
29 2

热门文章

最新文章