directshow的中文资料之控制视频回放窗口

PotPlayer/MPC-HC挂载VSFilterMod:实现完美ASS特效字幕渲染 在多媒体播放领域,字幕渲染是影响观影体验的关键环节。DirectShow作为Windows平台的核心媒体框架,其滤镜链机制决定了视频、音频和字幕数据的处理流程。字幕渲染器作为其中一环,负责将字幕文件中的文本和特效指令转换为屏幕上的图像。传统的播放器内置渲染器对Advanced SubStation Alpha(ASS/SSA)格式的高级特效支持有限,常导致卡拉OK、复杂变形、模糊阴影等效果丢失或渲染性能低下。VSFilterMod作为一款专精于ASS特效的第三方DirectShow滤镜,通过优化渲染引擎和提 阅读详情

 

主要讲解如何控制视频回放窗口,所有有些东西没有说,你可以参考"一.播放影片"中的代码。
需要的头文件:
#include <windows.h>
#include <mmsystem.h>
#include <streams.h>

定义一个窗口消息和HELPER_RELEASE 宏。
 #define WM_GRAPHNOTIFY  WM_USER+13
 #define HELPER_RELEASE(x) { if (x) x->Release(); x = NULL; }

申明变量:
 HWND      ghApp;
 HINSTANCE ghInst;
 HRESULT   hr;
 LONG      evCode;
 LONG      evParam1;
 LONG      evParam2;
 RECT      grc;
参数的含义和"一.播放影片"的一样,唯一要说明的是grc,将保存父窗口的客户区。

申明和初始化必须的接口。由于接口的索引值是自动的加1,所以你不要调用IUnknown::AddRef方法(如果你觉得陌生,你可以参考综述篇的"一、DirectX和部件对象模型COM")。
IGraphBuilder *pigb  = NULL;
IMediaControl *pimc  = NULL;
IMediaEventEx *pimex = NULL;
IVideoWindow  *pivw  = NULL;

定义一个函数:szFile参数是播放的媒体文件名
void PlayMovieInWindow (LPCTSTR szFile)
    {
 
实例化一个filter graph manager。
     hr = CoCreateInstance(CLSID_FilterGraph,
        NULL,
        CLSCTX_INPROC_SERVER,
        IID_IGraphBuilder,
        (void **)&pigb);

查询IMediaControl接口(提供run,pause and stop methods),IMediaEventEx接口(你可以接收事件响应),IVideoWindow接口。
    pigb->QueryInterface(IID_IMediaControl, (void **)&pimc);
      pigb->QueryInterface(IID_IMediaEventEx, (void **)&pimex);
      pigb->QueryInterface(IID_IVideoWindow, (void **)&pivw);

让filter graph manager建立filter graph去渲染输入文件。现在还没播放文件(当你用run函数播放时,filter graph会自动渲染输入文件的媒体类型,你不必指定渲染过滤器)。
    hr = pigb->RenderFile(wFile, NULL);
 
设置回放窗口的句柄:
   pivw->put_Owner((OAHWND)ghApp);

设置视频窗口的风格。这步很重要,你必须指定WS_CHILD, WS_CLIPCHILDREN, and WS_CLIPSIBLINGS 标志。
   pivw->put_WindowStyle(WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS);

得到父窗口的客户区。
   GetClientRect(ghApp, &grc);

在父窗口的客户区设置回放窗口的位置。在这里,回放窗口填满了客户区,当然你也可以取其一部分。如果播放的视频比这小,他会自动的伸展以适应位置的大小,如果比这大,他会缩小来适应。
   pivw->SetWindowPosition(grc.left, grc.top, grc.right, grc.bottom);

开始播了:
   hr = pimc->Run();

Windows 7 Media Center 复刻指南:老电脑变身离线家庭媒体中枢 Windows Media Center(WMC)是微软为客厅场景深度优化的原生媒体中心系统,基于WPF界面框架与DirectShow多媒体驱动,具备零学习成本遥控交互、HDCP合规HDMI直连、本地电视直播录制等不可替代能力。其离线优先架构天然规避数据追踪与开屏广告,特别适合老旧硬件再利用和银发族极简操作需求。在智能电视生态日益封闭、隐私风险加剧的今天,WMC凭借对TV Tuner的WHQL级硬件兼容性、EPG节目单自动识别、时间平移缓存等工程化设计,仍可稳定支撑高清直播、季播录制、媒体库自动化等核心功能 阅读详情

相关推荐

PotPlayer/MPC-HC挂载VSFilterMod:解锁ASS特效字幕完整渲染

字幕渲染是多媒体播放中的关键技术,它负责将文本信息叠加到视频画面上。其核心原理在于解析字幕文件(如SRT、ASS)中的时间轴、样式和位置数据,并按照指定规则进行实时绘制。在工程实践中,内置渲染器往往因追求兼容性与性能而牺牲了对高级特效的支持,这直接影响了特效字幕的视觉呈现效果。为了解决这一问题,可以引入外挂渲染器来专门处理复杂渲染任务。ASS/SSA字幕格式支持通过脚本定义丰富的动态效果,包括卡拉OK渐变、矢量绘图等,这使其在动画、演唱会MV等场景中被广泛使用。通过为PotPlayer或MPC-HC播放器挂

weixin_34290096的博客 528

窗口与句柄

窗口概念 窗口是windows应用程序中一个非常重要的元素,一个windows应用程序至少要有一个窗口,称为主窗口。窗口就是屏幕上的矩形区域,是windows应用程序与用户进行交互的接口。 一个应用程序窗口通常都包含标题栏、菜单栏、系统菜单栏、最小化框、最大化框、可调边框,有的还有滚动条,如图1所示。 窗口可以分为客户区和非客户区,客户区是窗口的一部分,由应用程序管理,可以在客户区完成文字显...

hk121的博客 4460

Unity集成UMP插件实现RTSP流媒体播放:跨平台开发与部署实战指南

流媒体技术是实现实时音视频传输的核心,其基础协议如RTSP(Real Time Streaming Protocol)广泛应用于安防监控、智慧园区等场景。RTSP通过建立和控制媒体会话,支持从摄像头、NVR等设备拉取实时流。在Unity引擎中集成流媒体播放功能,需要借助FFmpeg等底层库处理编解码与网络传输,以克服引擎原生支持的不足。这为AR/VR融合、远程巡检等应用提供了关键的技术支撑。本文聚焦于使用UMP(Unity Media Player)插件,该插件封装了FFmpeg,能高效处理H.264/H.

weixin_30876945的博客 406

DirectShow 导言 - DirectX SDK 中文化小组献上

DirectShow 导言Microsoft® DirectShow® 应用程序界面 (API) 是Microsoft® Windows® 平台的一种媒体流体系。DirectShow 提供高品质的媒体流捕捉和回放。它支持宽松的格式变化,包括高级流格式 (ASF), Motion Picture Experts Group (MPEG), Audio-Video Interleaved (AVI

jadedrip的专栏 2440

C#实现车牌识别与验证码识别:完整图像识别链路解析

字符识别是计算机视觉的基础任务,无论识别对象是车牌还是验证码,其核心技术链路都遵循“图像采集—预处理—目标定位—字符分割—字符识别”这一通用框架。在C#技术栈中,借助OpenCVSharp和AForge等开源库,可以高效构建一套可复用的识别管线:通过HSV颜色空间与形态学操作定位车牌区域,利用垂直投影与滴水算法解决字符粘连,再以模板匹配或深度学习模型完成最终字符输出。这一方案既适用于智能停车管理中的实时车牌识别,也能用于自动化测试中的验证码处理,体现了图像处理与模式识别技术的工程实践价值。本文基于一个真实的

weixin_29205061的博客 852

qt使用qxlsx实现xlsx、xls表格文件快速写入和读取

新年第二篇文章,收尾一个去年计划中发表文章和实现功能。

kbq的博客 1万+

LAV Filters终极指南:解锁专业级视频播放体验

你是否厌倦了视频播放时的各种兼容性问题?黑屏、卡顿、字幕乱码...这些困扰终于有了完美的解决方案。LAV Filters作为业界知名的开源DirectShow媒体解码套件,能够为你的视频播放体验带来革命性的提升。基于强大的FFmpeg库开发,这套工具已经成为无数媒体爱好者和专业用户的首选解码方案。 ## 核心组件深度解析 LAV Filters由三个精心设计的模块组成,每个模块都承担着关键的技

gitblog_00929的博客 787

长期换衣行人重识别(Long-Term Clothes-Changing Person Reid)数据集汇总

长期换衣行人重识别任务中目前常用的数据集总览目前换衣数据集的主要问题数据集换衣/总体情况集统计DeepChange(2021)LaST(2021)COCAS(2020)VC-Clothes(2020)LTCC(2020)PRCC(2019)Celebrities-reID(2019) 总览 在长期换衣行人重识别的任务当中,数据集的获取(尤其是对于学术环境下)是一个难点,主要的困难有以下几点: 采集大规模的数据集比较困难。 采集不同的衣服的数据集比较困难。 采集不同衣服不同角度的数据集比较困难。 目前也有

KingsMan666的博客 8378

基于VFW的视频监控系统

本文章是一个VFW的视频监控程序,基于MFC实现。其中包括了视频捕获、AVI文件读写、视频压缩等知识,以供后来的人少走些弯路。

wlpscu1的专栏 5268

创龙 瑞芯微 RK3588 国产工业开发板—Qt交叉编译环境搭建与GPU图形渲染实战

本文详细介绍了在创龙RK3588国产工业开发板上搭建Qt交叉编译环境并利用GPU进行图形渲染的完整实战流程。文章从环境准备入手,讲解了交叉编译工具链的配置,并提供了命令行与Qt Creator两种编译方法。通过部署运行和自启动设置,确保程序在板卡上稳定运行。最后,通过OpenGL案例实战,展示了如何调用RK3588的GPU进行高效图形渲染,释放其图形处理潜力,适用于工业HMI、智能终端等高要求图形界面开发。

weixin_28278377的博客 449

AD/Protel老手才知道的PCB过孔查看技巧:3分钟分清通孔、盲孔和埋孔

本文为PCB设计工程师提供了在Altium Designer/Protel中快速鉴别通孔、盲孔和埋孔的实用技巧。通过层叠管理器、高级筛选工具和实战五步法,帮助用户在3分钟内精准识别过孔类型,提升设计效率和电路性能。特别适合处理高密度HDI板卡中的复杂过孔布局。

weixin_29164497的博客 573

关于Video Renderer和Overlay Mixer

原文作者: 陆其明 整理日期: 2004/12/27 大家知道,Video Renderer (VR)是接收RGB/YUV裸数据,然后在显示器上显示的Filter。为提高计算机画图性能,根据你计算机显卡的能力,VR会优先使用DirectDraw以及Overlay表面;如果这些特性得不到显卡的支持,VR会使用GDI函数进行画图。在上级Filter连接到VR时,VR总是先要求当前显示器设置的色彩位数的...

weiyinchao88 158

centos7下100T存储扩容(LVM)至150T

查看新增磁盘情况lsblk,fdisk -l [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 4.2G 0 rom vda 252:0 0 80G 0 disk ├─vda1 252:1 0 1G 0 part /boot └─vda2 252:2

tiyager的博客 1024

Filter Graph的事件交互机制

Filter Graph的事件交互机制 作者:陆其明 刊载于《中文信息——程序春秋》2003.9期 关键词: DirectShow Event Notification 编写基于DirectShow的应用程序,需要有一种机制,能够让应用程序与Filter Graph之间实现交互控制。DirectShow设计了这样一套事件通知(Event Notification)机制:当Filter状态转换、运行

1406

在Modelsim中手动添加仿真库

缘由:在使用rom ip核的时候发现仿真需要altera_mf库的支持,而我的ModelSim没有这个库,所以想写一篇手动添加仿真库的文章方便自己以后使用:首先新建一个库,名字叫做altera_mf:然后编译对应的库文件:这里altera_mf.v文件是在quartus安装路径下quartus\eda\sim_lib文件夹下,点击编译后退出:最后在modelsim->example文件夹下可以找到编译好的库文件:

欢迎一起交流问题! 3402

高电压技术的面试内容整理(详细版本:57题)

涵盖了高电压技术的关键领域,包括气体放电的物理过程、液体和固体介质的绝缘特性、高压外绝缘的分类与特性、电气设备绝缘试验的方法与原理、电力系统的防雷保护措施,以及内部过电压的产生、影响与限制方法,为理解和应对高电压环境下的电气问题提供了系统的知识框架。通过深入探讨气体放电理论、介质极化与损耗、绝缘子的电气特性、绝缘试验技术、防雷策略以及内部过电压的管理。

weixin_44808274的博客 775

COC跑团熟肉制作全流程:从录制到压制的避坑指南

在视频创作领域,将多人语音游戏转化为带字幕的成品内容,是一项涉及多环节的工程实践。COC跑团作为一种TRPG玩法,其线上对局动辄数小时,如何将原始录音、画面与字幕高效整合,是许多内容创作者面临的共性难题。音频录制质量、语音转写准确度、字幕时间轴校准以及视频编码参数,每一步都可能成为影响成片质量的瓶颈。借助OBS进行分轨录音,利用Whisper生成带时间轴的逐字稿,再通过Aegisub精细调整字幕样式,最后用FFmpeg完成压制输出,构成了一套可复用的技术链路。音画不同步、字幕乱码、字体缺失等问题往往源于录制

weixin_34088583的博客 334

基于FFT的轴承故障诊断 - MATLAB代码和详细解释

最后,我们可以根据异常特征的位置和特征分析来确定轴承故障的类型。最后,我们可以根据异常特征的位置和特征分析来确定轴承故障的类型。因此,通过分析频谱图,我们可以识别轴承故障的特征。因此,通过分析频谱图,我们可以识别轴承故障的特征。我们可以选择适当的阈值,并在频谱图上标记异常特征。通过这种基于FFT的轴承故障诊断方法,我们可以快速、准确地检测和诊断轴承故障。接下来,我们将应用FFT来获取振动信号的频谱信息,频谱显示了信号在不同频率上的能量分布。通过将异常特征标记在频谱图上,我们可以直观地识别轴承故障的存在。

COWizard的博客 613

IDvdControl2 VS IMediaControl

<br /><br />The DVD Navigator has methods to stop and pause playback. These methods are similar — but not identical — to the Stop and Pause methods in IMediaControl. Here is the difference between them: The IDvdControl2 methods change what the DVD Na

753

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

DirectShow技术介绍(长篇)-5

<br /><br />3.4. Filter Graph中的数据流<br />     这一节主要描述媒体数据是如何在filter graph中流动的。如果你只是为了编写DirectShow应用程序,你不需要知道这些细节,当然,知道这些细节对于编写directshow应用程序仍然是有帮助的。但是如果你要编写directshow filter,那么你就必须掌握这部分知识了。<br />3.4.1. DirectShow数据流概述<br />     在这一部分先粗略地描述一下DirectShow中数据流是

bisword的专栏 1257

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

上一篇: directshow的中文资料之综述&配置篇
下一篇: directshow的中文资料之建立一个捕捉程序
capboy
博客等级 码龄26年 15粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值