技术背景我们在对接外部开发者的时候,遇到这样的技术诉求,客户用于地下管道检测场景,需要把摄像头的数据拉取过来,然后叠加上实时位置、施工单位、施工人员等信息,然后对外输出新的RTSP流,并本地录制一份带动态水印叠加后的数据 技术实现废话不多说,下图先通过Android平台拉取RTSP流,然后把解码后的yuv或rgb数据回上来,以图层的形式投递到推送端,需要加水印的话,添加文字水印或图片水印(系动态水印)图层,底层做动态叠加后二次编码打包 ;releasePlayerHandle();return false;}isPlaying = true;if(audio_opt_ == 2 || video_opt_ == 2){StartPull int half_h = (height_+1)/2;y_row_bytes_ = align(width_,2);u_row_bytes_ = align(half_w, 2);v_row_bytes ;return;}startLayerPostThread();btnRTMPPusher.setText("停止推送");}});总结以上是Android平台拉取RTSP数据,然后添加动态水印后,二次输出到轻量级
上一篇我们简单介绍了rtsp协议,本篇我们来看一下rtsp的消息结构! RTSP消息分为两大类,一类是请求消息(request),一类是回应消息(ressponse)! 说明: 请求消息由方法+URI+RTSP版本开头,之后跟一条或多条消息! URI:表示接收方的地址,如rtsp://192.168.1.201:554 CR:表示回车 LF:表示换行 RTSP使用消息类型和消息体来表示不同类型的消息。 最后一条消息要使用两个CR LF。 如图中所示,该RTSP请求消息的方法为OPTIONS,请求的目标地址为rtsp://192.17.1.63:554,RTSP的版本为1.0; 接下来包含两种类型的消息,第一种为CSeq表示序列号,本次请求的序列号为 我们接下来看一下回应消息的格式: 2 回应消息(response) ? 回应消息由RTSP版本+状态码+解释开头,之后跟一条或多条消息!
本文告诉大家如何使用 win2d 给图片加上水印。 安装 首先需要使用 Nuget 安装 win2d ,安装参见win10 uwp win2d 如果没有更新 dot net core 那么在运行可能会出现下面异常System.TypeLoadException 如果需要对图片处理,使用的是 CanvasRenderTarget ,可以看到这个类需要传入两个参数ICanvasResourceCreatorWithDpi,Size,我也就使用这个函数 在 win2d 在图片添加文字的方法实际上和在 win2d 的其他处理相同,具体可以去看我的win2d博客。 (float) (duvDbecdgiu.Size.Width / 2), (float) duvDbecdgiu.Size.Height/2), Colors.Black);
技术背景 我们在做Windows平台流数据转发的时候,除了常规的RTSP转RTMP推送外,还有个场景就是,好多开发者希望拉取的RTSP流,做二次视频分析,或者加动态水印等,处理后的数据,再二次编码推送到 技术实现 本文就以Windows平台拉取RTSP流,回调yuv数据到上层,处理后的数据,二次投递到RTMP服务和轻量级RTSP服务,然后叠加动态水印,并实现处理后的数据实时录像功能,废话不多说,先上图: 上图拉取了RTSP流,然后左侧窗体显示,添加动态水印后,再在右侧预览,并把数据重新投递到推送端,考虑到编码性能,我们可选硬编码。 = 0) --h; if (w < 2 || h < 2) return false; 流二次编辑(如增加动态水印)或视频分析(视觉算法处理)后,再录像、转推至RTMP或轻量级RTSP服务流程,经过二次处理后的流数据,配合我们的SmartPlayer,依然可以整体毫秒级的延迟体验
相信大家在准备课件或者微课,以及日常发朋友圈,微博时经常需要在网上找一些图片素材,从而会遇到图片带有水印的情况,如平台标志,个人信息,贴图等,既不美观还不能直接使用,这时我们就不得不想办法去除水印,那么你知道如何去水印吗 今天教你去水印,一键搞定,轻松去除水印,快来跟我学习一下吧!去水印方法一:采用工具:水印云操作难度:★☆☆☆☆水印云是一个在线图片处理工具平台。 以下为软件去水印的操作步骤:步骤一:打开软件——在功能首页中找到【图片去水印】功能——点击【添加图片】上传图片文件。 接下来让我们看下去除水印后的前后对比吧去水印方法二:手机去水印采用工具:水印云小 序操作难度:★☆☆☆☆1秒就搞定,不管你是新手还是老手,完全不需要任何技术,直接上手就能用,超简单,快速。 以下为软件使用的操作步骤:打开软件——选择【图片去水印】功能——点击【添加图片】上传图片文件——选择【涂抹】模式——涂抹水印内容——点击【开始去水印】最后【下载文件】即可。
简介:水印生成器,原理很简单,一时在网上没有找到打水印的网站,自己便做了一个,效果如下图,可自定义字体大小、字体类型以及颜色。 开发环境:vs 2010 [net 3.5 WindowsForms应用程序] 本文带给大家: 1.方便的打水印的工具。 2.为net编程者提供打水印的工具类,可供大家使用。 【①.源代码:点击下载 ②.水印生成器下载:点击下载】 ======================================================== 上一版的水印生成器不支持批量处理 ,今天笔者已经有时间赶出了版本2支持批量处理水印的功能,如图: ? 水印生成器版本2源码下载:点击下载
技术背景我们在对接RTSP播放器相关的技术诉求的时候,遇到这样的需求,客户做特种设备巡检的,需要把摄像头拍到的RTSP流拉下来,然后添加动态水印后,再生成新的RTSP URL,供平台调用。 技术实现在此之前,大牛直播SDK有非常成熟的RTSP播放、轻量级RTSP服务和录像模块,要做的就是,拉取到RTSP流后,把解码后的YUV或RGB回调给上层,上层通过图层的形式,添加动态文字水印(图片水印亦可 ,添加支持了硬编码选项设置)、动态水印设置、轻量级RTSP服务、实时录像和RTMP推送。 cur_sel_encoder_id, (uint)cur_video_codec_id, (int)cur_sel_gpu); publisher_wrapper_.SetVideoQualityV2( 拉流二次编码,整体逻辑不复杂,就是把数据回调后,二次处理,我们推送端设计的是图层的形式,所以,回调后的数据,直接作为第0层,文字水印作为第一层,如果需要图片水印,图片水印作为第三层即可。
最近写项目遇到一个需求,全局显示水印,不管在哪个路由都要显示。 , // 水印文字的对齐方式 textBaseline = "middle", // 水印文字的基线 font = "16px Microsoft Yahei", // 水印文字的字体 fillStyle = "rgba(184, 184, 184, 0.6)", // 水印文字的填充样式 content = "我是水印", // 水印文字的内容 rotate = -30, // 水印文字的旋转角度 canvas.setAttribute("width", width); canvas.setAttribute("height", height); const ctx = canvas.getContext("2d ctx.fillStyle = fillStyle; ctx.rotate((Math.PI / 180) * rotate); ctx.fillText(content, parseFloat(width) / 2,
继之前一篇科普文《如何使用RTSP推流组件EasyPusher将MP4文件推到EasyDarwin开源平台》发布后,有开发者提出疑问:假如需要显示视频直播时间,如何在推送的时候可以自定义在视频上叠加时间水印 fontfile=arial.ttc:x=w-tw-20:y=30:fontcolor=white:fontsize=11:text=‘2020-10-10 %{localtime:%H\:%M\:%S}’” -rtsp_transport tcp -vcodec h264 -f rtsp rtsp://172.81.216.155:554/test.sdp 此命令解释,循环把test.mp4读出来以RTSP协议方式推送到172.81.216.155
通过 Android 端 RTSP 播放器模块及 YUV 数据回调机制,系统可在实时播放的同时进行 动态水印叠加、录像存档、二次编码以及轻量级 RTSP 服务再发布。 2️⃣ 播放解码层 主控端或 Android 终端通过大牛直播SDK 的 RTSP 播放器模块接入实时流。 SDK 内核以全自研内核实现全链路处理,保证了在嵌入式或定制系统中的可裁剪性与一致性。 2️⃣ 中间层:水印叠加与数据转投递在 demo 中,播放器回调的 YUV 数据会交由业务层进行轻量级图像处理。 常见操作包括: 叠加设备编号、时间戳、水印 Logo; 局部标注(如检测点框选)。 拉流并解码; 2️⃣ 解码后帧通过 YUV 回调直接送入推送端接口(LibPublisherWrapper); 3️⃣ 推送端(SmartPublisher)负责二次编码与录像,再可选开启 RTSP/ 它让系统拥有三种能力: 可看:低延迟、高稳定的实时画面; 可用:YUV 数据可供 AI/水印/再编码复用; 可传:轻量 RTSP/RTMP/FLV 服务可随时转发。
技术背景我们在做Windows平台RTMP推送、轻量级RTSP服务的时候,遇到过这样的技术需求,除了常规的png图片水印外,开发者希望能在桌面或摄像头上,叠加上实时时间和位置信息,并保存到图像里。 技术实现本文以大牛直播SDK的摄像头采集+动态文字水印为例,谈谈如何实现的,简单来说,这块分两步,第一步,如何从文字里面获取到rgb数据,第二步,如何吧rgb数据叠加到摄像头上? 废话不多说,先上图,选中采集摄像头和摄像头添加文字水印,如果需要默认打开动态文字水印,直接打开即可,如需关闭,随时可以关闭或二次打开:本文以启动个轻量级RTSP服务为例,效果如下,可以清楚的看到右侧播放端 cur_sel_camera_frame_rate_index_) { NT_PB_CameraLayerConfigV2 camera_layer_c0 = new NT_PB_CameraLayerConfigV2(); CameraInfo camera = cameras
基于此,本文我就带着大家学学如何给你的图片加水印,仅需要2行Python代码,任何人都可以学会。 ; mark: 使用哪些字作为水印; out: 添加水印后保存的位置; color: 水印字体的颜色,默认颜色#8B8B1B; size: 水印字体的大小,默认50; opacity: 水印字体的透明度 一行代码给图片加水印 原图长这样: [5099a478e2b643de8047b1b95bbe0b1a~tplv-k3u1fbpfcp-zoom-1.image] 使用下面这行代码,仅仅两行代码: from : [8c89cb670c2c459994f02e06973a105b~tplv-k3u1fbpfcp-zoom-1.image] 最后再为大家解释一下,这一行代码的含义。 水印字样为快学Python,水印透明度是0.2,水印的旋转角度是45°,水印之间的间隔是30个空格。添加水印后,最后将处理后的图片保存在一个指定目录下。
基于此,本文我就带着大家学学如何给你的图片加水印,仅需要2行Python代码,任何人都可以学会。 下面分别为大家讲述add_mark()方法中8个参数的含义,介绍如下 : file: 待添加水印的照片; mark: 使用哪些字作为水印; out: 添加水印后保存的位置; color: 水印字体的颜色 ,默认颜色#8B8B1B; size: 水印字体的大小,默认50; opacity: 水印字体的透明度,默认0.15; space: 水印字体之间的间隔, 默认75个空格; angle: 水印字体的旋转角度 一行代码给图片加水印 原图长这样: ? 水印字样为快学Python,水印透明度是0.2,水印的旋转角度是45°,水印之间的间隔是30个空格。添加水印后,最后将处理后的图片保存在一个指定目录下。
一、三大核心水印能力,覆盖全场景风险安得基于企业终端管控实战需求,打造屏幕水印、打印水印、文档水印三位一体防护体系,全面覆盖数据使用、流转、输出全流程,精准封堵各类终端泄密漏洞。1. 屏幕水印:严防拍照泄密,让偷拍无处遁形针对员工手机拍摄终端屏幕、截取敏感数据外泄的高频风险,安得卫士屏幕水印会自动强制加载,水印内容包含计算机名、IP&MAC、部门、用户姓名、当前日期等唯一身份信息,支持自定义位置 核心作用:以显性水印形成强力震慑,一旦发生偷拍泄密,可通过水印快速锁定责任人,真正实现 “拍照即留痕”。2. 文档水印:跟随文件流转,实现全生命周期防护区别于屏幕与打印水印,安得卫士文档水印直接嵌入文件内部,在复制、转发、存储等流转环节中永久保留,不随打开环境变化而消失。 与TDLP外发拦截联动:当含有水印的敏感文件被违规外发(邮件、网盘、IM等),TDLP可识别水印中的身份信息,联动触发阻断、审计或溯源,精准锁定责任人。水印管控已成为终端安全标配能力。
收到的需求是在一个图上匹配到水印 然后将原来的水印换成一个新水印 先要安装一个库 库文件代码如下: # coding=utf-8 import cv2 import numpy as np # 膨胀算法 :return: x1, y1, x2, y2 """ # 水印模板原图 img = cv2.imread(watermark_template_filename :param img: 待去除水印图片位图 :param watermark_template_gray_img: 水印模板的灰度图片位图,用于确定水印位置 # 寻找水印位置 img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) x1, y1, x2, y2 = self.find_watermark_from_gray 加水印代码如下: import cv2 import numpy as np path = 'E:/sample/' matimage = cv2.imread(path + '20180516144932
我们在此前的文章中介绍过关于EasyNVR在去年就已经实现了视频添加水印的功能。开启水印后,用户可自主上传水印图片,水印支持移动、修改图片大小等操作。感兴趣的用户可以翻阅我们往期的文章进行了解。 有用户提出需求,需要在平台分发的RTSP视频流中添加水印,并将添加水印后的RTSP流接入大华的NVR进行播放。因为用户使用的是定制版本,所以针对该用户的需求,我们在该定制版本上也增加了视频水印功能。 添加水印后的效果,如图所示:将分发的RTSP流地址放入大华的NVR里:如图所示,视频在大华NVR中显示在线,并可以正常播放。 作为性能稳定、功能丰富的视频监控平台,EasyNVR视频边缘计算网关可支持市面上大部分的RTSP/Onvif协议设备,并拥有视频转码、直播与分发、云端录像与回放等多种功能,基于这些强大的视频能力,EasyNVR
2. 16); screenWindowHeight = align(screenWindowHeight / 2, 16); } / 5, 16); screenWindowHeight = align(screenWindowHeight * 2 / 5, 16); } 文字、图片水印需要而且建议支持,比如实时时间、学校或公司logo等。 (false); final String[] watermarks = new String[]{"图片水印", "全部水印", "文字水印", "不加水印"}; ArrayAdapter
还有一篇文章添加多种水印(文字水印(带背景颜色) +图片水印)大家可以看一下、 https://blog.csdn.net/whiteGu/article/details/97653571 /** * @param srcPath 需要添加水印的完整地址 * @param ids 需要添加的水印的id集合 ,结果以 ","分隔 * @return 返回包含水印图片的输入流 = waterFile2) { Image temp2 = ImageIO.read(waterFile2); ImageIcon imageIcon2 = new ImageIcon(temp2); watermarkImage2 = imageIcon2.getImage(); } height); //处理第二张水印(如果是多水印可以采用循环方式,由于我这里只会有2张水印所以写死了) if (null !
AV_ERROR_MAX_STRING_SIZE, errnum) #define INFILE "in.flv" #define RTMP "rtmp://192.168.140.128/live/test" #define RTSP "rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov" int file2rtmp() { int ret = 0; / = 0) cout << av_err2str(ret) << endl; return 0; } int rtsp2rtmp() { int ret = 0; 封装上下文 AVFormatContext* ictx = nullptr; AVFormatContext* octx = nullptr; const char* iurl = RTSP = 0) cout << av_err2str(ret) << endl; return 0; } int main() { //file2rtmp(); rtsp2rtmp
导播SDK 数据源:1. rtmp/rtsp音视频流;2. 的一对一互动demo(可扩展RTSP一对一互动); SmartServiceCameraPublisherV2: 后台摄像头RTMP直播推送SDK; SmartServicePublisherV2 [实时水印]支持动态水印设置,完美支持文字水印、实时时间水印和图片水印; [透明度]可以设置透明度处理(设置遮盖); 对应Demo: 测试程序:SmartPublisherDemo.exe; ]Windows平台支持文字水印、png水印、实时遮挡,Android平台支持文字水印、png水印; [RTMP推送模式]支持RTMP推送 live|record模式设置(需服务器支持); [镜像] ]Windows平台支持文字水印、png水印、实时遮挡,Android平台支持文字水印、png水印; [复杂网络处理]支持断网重连等各种网络环境自动适配; [动态码率]支持根据网络情况自动调整推流码率