Directshow 如何在视频中插入水印Logo图片

JasperReport图片处理全解析:从静态嵌入到动态加载的实战指南 在企业级报表开发中,图片的动态嵌入与显示是提升数据可视化效果的关键技术。其核心原理在于报表引擎如何根据配置,在运行时或设计时加载并渲染图片资源。掌握静态嵌入与动态加载两种方案,能有效解决生产环境中图片不显示、内存溢出等常见问题,对于构建稳定、可维护的报表系统具有重要价值。本文聚焦JasperReport这一主流Java报表引擎,深入探讨了通过参数(Parameter)和字段(Field)传递图片流(InputStream)的技术细节,并提供了从类路径、数据库BLOB字段及网络URL加载图片的完整工程实践方案 阅读详情

下面介绍如何在视频文件中加入自己的水印图片及LOGO


typedef struct _VMRALPHABITMAP {   

 DWORD dwFlags;                                                                                                          //指明从哪儿获取位图

HDC hdc;                                                                                                                         //指定的设备上下文DC。如果指定为NULL,则位图是从一个DirectDraw surface上获取。

LPDIRECTDRAWSURFACE7 pDDS;                                                                            // 指向 DirectDraw surface的一个指针。如果指定为NULL则,位图是从GDI DC中获取。

RECT rSrc;                                                                                                                     //指明源矩形

NORMALIZEDRECT rDest;                                                                                            //指定目标矩形

 FLOAT fAlpha;                                                                                                               //指定alpha混合值,必须有一个在0.0到1.0之间的值(含) 。

COLORREF clrSrcKey;                                                                                                  //指定需要取消图片的背景颜色

} VMRALPHABITMAP;typedef struct _VMRALPHABITMAP *PVMRALPHABITMAP;

 

dwFlags应为以下值

 

VMRBITMAP_DISABLE (0x00000001)现在不需要位图
VMRBITMAP_HDC (0x00000002)从HDC中获取位图
VMRBITMAP_ENTIREDDS (0x00000004)从整个DirectDraw surface获取位图.当这个被指定时, 指定rSrc没有用.
VMRBITMAP_SRCCOLORKEY (0x00000008)clrSrcKey 值可用,当在混合运算渲染位图时,这个值将被用到
VMRBITMAP_SRCRECT (0x00000010)

 

HRESULT CVMRPlayMovive::BlendApplicationImage(HWND hwndApp)
{
LONG cx, cy;
HRESULT hr;
RECT rc={0};
hr = pWC->GetNativeVideoSize(&cx, &cy, NULL, NULL);
if (FAILED(hr))
return hr;


HINSTANCE hInstance = (HINSTANCE)GetWindowLong(m_hwnd,GWL_HINSTANCE); 
HBITMAP hbm = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP3));
    //加载位图
BITMAP bm;
HBITMAP hbmOld;
HDC hdc = GetDC(hwndApp);
HDC hdcBmp = CreateCompatibleDC(hdc);
ReleaseDC(hwndApp, hdc);
GetObject(hbm, sizeof(bm), &bm);
hbmOld = (HBITMAP)SelectObject(hdcBmp, hbm);


VMRALPHABITMAP bmpInfo;
ZeroMemory(&bmpInfo, sizeof(bmpInfo) );
bmpInfo.dwFlags = VMRBITMAP_HDC;
bmpInfo.hdc = hdcBmp;




g_nBitmapWidth = bm.bmWidth;
g_nImageWidth  = bm.bmWidth / NUM_IMAGES_IN_BITMAP;
SetRect(&rc,0,0,g_nBitmapWidth, bm.bmHeight);
bmpInfo.rSrc = rc;


// rDest specifies the destination rectangle in composition space (0.0f to 1.0f)
bmpInfo.rDest.left   = (float)(cx - g_nImageWidth) / (float)cx - EDGE_BUFFER;
bmpInfo.rDest.top    = (float)(cy - bm.bmHeight)   / (float)cy - EDGE_BUFFER;
bmpInfo.rDest.right  = 1.0f - EDGE_BUFFER;
bmpInfo.rDest.bottom = 1.0f - EDGE_BUFFER;


g_rDest = bmpInfo.rDest;
g_rSrc  = bmpInfo.rSrc;


g_fBitmapCompWidth = (float)g_nImageWidth / (float)cx;
bmpInfo.fAlpha = 0.0;


SetColorRef(bmpInfo);


hr = pBMP->SetAlphaBitmap(&bmpInfo);
if (FAILED(hr))
Msg(TEXT("SetAlphaBitmap FAILED!  Bitmap operations will fail. hr=0x%x\r\n"), hr);


// Clean up GDI resources
DeleteObject(SelectObject(hdcBmp, hbmOld));
DeleteObject(hbm);
DeleteDC(hdcBmp);


// If setting the alpha bitmap succeeded, update its parameters
if (SUCCEEDED(hr))
{
SetRect(&rc, 0, 0, g_nImageWidth, bm.bmHeight);
bmpInfo.rSrc = rc;
g_rSrcSingle = rc;
bmpInfo.dwFlags = VMRBITMAP_SRCRECT | VMRBITMAP_SRCCOLORKEY;
bmpInfo.fAlpha = TRANSPARENCY_VALUE;
hr = pBMP->UpdateAlphaBitmapParameters(&bmpInfo);
if (FAILED(hr))
Msg(TEXT("UpdateAlphaBitmapParameters FAILED!  hr=0x%x\r\n"), hr);
}


return hr;
}


void CVMRPlayMovive::SetColorRef(VMRALPHABITMAP& bmpInfo)
{
bmpInfo.clrSrcKey = RGB(255, 0, 0);       
bmpInfo.dwFlags |= VMRBITMAP_SRCCOLORKEY;
}

Unity高性能录屏实战:基于NatCorder的跨平台实现与高级功能解析 在Unity应用与游戏开发中,屏幕录制是一项基础且关键的功能,常用于记录游戏过程、制作教程或分享精彩瞬间。其核心原理是通过捕获渲染管线输出的图像帧与音频系统的采样数据,经过编码器压缩后封装为视频文件。这项技术的价值在于能够无损或高质量地保存实时交互内容,广泛应用于游戏回放、功能演示、自动化测试与内容创作等场景。实现高性能录屏需要解决跨平台兼容性、资源开销与音画同步等工程挑战。本文以热门的NatCorder插件为例,深入剖析其利用硬件编码器(如VideoToolbox、MediaCodec)实现低开销录制的技 阅读详情

相关推荐

DirectShow图像和相机设置

参考:Configure the Video Quality - DirectShow 图像质量设置 逆光补偿 亮度 对比度 色调 饱和度 清晰度 伽马 白平衡 增益 相机控制 缩放 调焦 曝光 光圈 全景 倾斜 滚动 低照度补偿 // 视频质量设置 IAMVideoProcAmp *pProcAmp = NULL; HRESULT hr = pDevFilter->QueryInterface(IID_IAMVideoProcAmp, (void **)&pP

David 2669

在C#中用DirectShow做的媒体播放机

在C#中用DirectShow做的媒体播放机概述:我的这个程序仅仅只是告诉大家如何用DirectShow 在C#中做一个播放机,世上并不能有太多的功能.也许你只要花上五分种就可以解决问题.是的如果你用的是IDE,我感保证一切都只是用你的鼠标在你的设计器中点点属性设置一些东西就可以简单的完成了.当然了还是要那么一点点编码的.至少是关于DirectShow 接口的.例如,视屏和声音.程序中

何双江(yarshray)的专栏 4619

怎么在视频上叠加字幕和Logo--技术实现2

上一篇博文介绍了渲染时叠加字幕的技术实现方法,而这一篇给大家讲解怎么用修改视频像素的方法叠加字幕和Logo。下面我把叠加字幕和Logo都统称为叠加OSD。 图像有分YUV和RGB格式,每个像素都有一个坐标和地址,我们要在图像指定地方叠加OSD,其实就是修改这些地方某些像素的像素值。叠加字幕原理简单描述就是:在视频图像上指定位置的像素值用OSD前景的颜色值代替。什么是OSD前景颜色?对字幕来说,前...

爱写代码的自由人 4107

视频加水印

AviSynth+ffmpeg转换3GP为LFV加水印<br />之前的转换用的是mencoder进行非FLV格式到FLV格式的转换,感觉比FFMPEG支持的格式多的多,当然这里的版本是直接从官方下载的,我自己对编译不懂也没有时间去学,毕竟视频方面的知识比较深一时也是学不来的。<br /><br />前天测试告诉我mencoder转换3gp后声音消失了,多试了几次果然是这样,baidu和google两处搜了N久楞是没有找到答案。后来用FFMPEG进行转换,声音还算可以,于是打算遇到3GP转FLV的时候,就用

海阔天空 3119

做一个directshow的filter,把RGB视频流变成黑白的

我是按网上的一篇文章(做了一个directshow的filter,把RGB视频流变成黑白的)做的一个filter,有一点改动。可以参考一下。

dicretshow开发的虚拟摄像头源码

dicretshow开发的虚拟摄像头源码,在qq视频上面可以使用的,但是在抖音直播伴侣等平台我没有测试过,正在开发这块的可以下载来研究一下

c#中给视频添加水印(文字水印和图片水印)

c#后端处理给视频或图片添加水印

被啊奶追着屁股打仍然要编程的浪漫漫画家 1596

C# directShow 视频加水印

C# directShow 视频加水印,用C# 调用directshow给视频添加Logo,水印等

VC+DirectShow对视频进行图片处理(转)

现在的图像越来越花巧了,有浮雕、马赛克、相框等特效,看得人眼花缭乱。本来图像特效没什么稀奇的,在PhotoShop等图像处理软件中我们早已见得多了,不过用在视频上就令人感觉有点神奇。我一直都想拥有这些效果,但我的摄像头是很早就买到的,没福气奢望驱动程序给 它带来的全新精彩。刚好我学习DirectShow有一段时间了,既为了挑战自己(我从未写过令自己感到满意的程序),也为了检验学习成果,我就下了

一蓑烟雨的专栏 3580

c#下使用Directshow进行图像采集

用C#开发DirectShow程序,采集摄像头实时视频,并进行各种处理;涉及很多C#使用COM的知识

directshow视频加入文字信息

用directshow写视频获取图片抓拍和显示程序,有分辨率设置,文字信息加入视频和抓拍的图片,设置文字信息的颜色和大小,这里给出单行,自己可以改成多行或者鼠标定点加入文字信息,其中也用到GDI+对多种图片格式的显示和保存。因在VC2010编译出的,里面包含已编译好的安装程序,此程序抓取的图片也可作为字符文字识别的测试平台,方便测试自己写的文字识别函数代码

图像:VC+DirectShow对视频进行图片处理

现在的图像越来越花巧了,有浮雕、马赛克、相框等特效,看得人眼花缭乱。本来图像特效没什么稀奇的,在PhotoShop等图像处理软件中我们早已见得多了,不过用在视频上就令人感觉有点神奇。我一直都想拥有这些效果,但我的摄像头是很早就买到的,没福气奢望驱动程序给它带来的全新精彩。刚好我学习DirectShow有一段时间了,既为了挑战自己(我从未写过令自己感到满意的程序),也为了检验学习成果,我就下了决心用

luckyboy101的专栏 2743

directshow水印滤镜

作为dirextshow的filter插件,能够在directshow架构体系上面实为视频添加水印。

Windows Media Format SDK系统概述

Windows Media媒体内容采用的是ASF文件格式。Microsoft公司提供了Windows Media Format SDK,以支持以下三大功能:ASF文件的生成(包括ASF数据的流化)、ASF文件的编辑和ASF文件的播放(包括ASF媒体流的播放)。在开始编程之前,对SDK系统有个总体的认识和理解是必要的。(注:如果未作特别说明,本书所述的SDK或WMF SDK均是指Windows Me

呦呦鹿鸣 1万+

RuoYi项目适配达梦数据库(二)

RuoYi项目,代码生成模块的达梦数据库适配。

邢慧鹏的博客 1万+

Fortran基础编程(3)——格式化输出

本篇推文将进一步讲解Fortran基础语法中格式化输出与声明部分,让我们的代码更加美观起来吧~

qq_45715554的博客 3826

在DirectShow的视频图像上叠加线条和文字

在DirectShow的视频图像上叠加线条和文字最近一直在从事工业测量方面的开发工作,难免会用到各种各样的相机,其中支持DX的USB相机开发起来比较方便,由于工作需要经常要在视频图像上叠加线条和文字,图1便是我最近一段时间写的一套工业检测系统,图像是从USB相机中实时获取的。看到网上有些帖子也在讨论这个问题,现在给出我的一个非常简单的思路并附上源代码(vc++6.0编译通过,需要连接USB相机

xiaolang86的专栏 9316

智驾系统分层架构:从传感器到执行器的全链路解析

本文深入解析了智能驾驶系统的分层架构,从传感器数据采集融合、应用层决策到车辆管理层执行,完整呈现了从感知到控制的全链路工作流程。文章重点阐述了架构设计的核心优势在于接口标准化与模块解耦,以ACC和LKA协同场景为例,说明了各层级如何通过清晰分工与高效协作,实现复杂系统的可靠、灵活与易于升级。

weixin_29219189的博客 399

【1】C#下的Directshow

因为Directshow是C++的东西,后来为了方便,才有牛人们在C#把directshow重写,但是相关文档很少,所以为了了解DIrectshow ,从C++下的directshow开始是最合理不过的了,但是在C#用不到的知识就基本没有提及了·· 1 基础介绍 部分问题摘录:   DirectShow与ActiveMovie的关系?       Active

一步一脚印 7460

手把手教你从入门到精通C# 操作MySql数据库

本文是《C#操作MySql数据库从入门到精通》专栏的导读,帮助大家知道学习本专栏能够获取什么!

qq_34059233的博客 1929

论文必备 - YOLO26统计数据集中大、中、小目标数量,附完整代码和详细使用步骤

数据集是由微软开发维护的大型图像数据集。数据集标注类型对应任务包括物体检测、关键点检测、实例分割、stuff分割(没有特定形状的物体),全景分割人体关键点, 人体密度检测等。官网数据规模和样本特点数据规模大:总共包含32.8万张图像)。其中标注过的图像超过 20 万张,拥有 150 万个目标实例,数据量丰富,能够为模型训练提供充足的信息。类别丰富:包含80个目标类别和91个“stuff”类别。目标类别涵盖了日常生活中常见的各种物体,如人、动物、交通工具、生活用品等;stuff。

Limiiiing的博客 263

基于Directshow框架使用Windows渲染器VMR叠加水印

对于windows系统,EVR/VMR9/VMR渲染器均提供了叠加静态图片的接口:SetAlphaBitmap();此接口支持静态图片的资源使用方式,一种是HDC,一种是SURFACE;使用发现,如果静态图片不规则,是有Alpha通道的不同取值形成,则通过HDC叠加的会有黑边存在;对于EVR/VMR9可采用SURFACE,使用D3D创建,完美水印效果...

weixin_34358092的博客 589

Transformer 面试题及详细答案120道(1-10)-- 基础概念

本文总结了Transformer模型的10个常见面试问题及答案,涵盖了其核心结构、创新点、工作机制等关键知识点。主要内容包括:Transformer的自注意力机制和多头注意力机制创新点,相比RNN/CNN的优势,模型在《Attention Is All You Need》论文中的提出背景,以及Encoder-Decoder协同工作流程等。重点解析了位置编码的作用、长距离依赖处理能力、与传统注意力机制的区别等核心问题。每个问题都给出了简明扼要的专业解答,适合作为Transformer相关面试准备的参考资料。

大剑师兰特的GIS世界 849
上一篇: DirectShow 录制视频时,如何在视频上画线和输出文字
下一篇: Directshow 捕捉视频入门篇
CreatedSign
博客等级 码龄14年 10粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值