专业知识:全栈程序员必看
优采云 发布时间: 2022-10-15 21:13专业知识:全栈程序员必看
大家好,又见面了,我是你们的朋友全战军。如果您正在寻找激活码,请点击查看最新教程,关注公众号“全栈程序员社区”获取激活教程,之前版本的教程可能已经失效。最新Idea2022.1教程个人测试有效,一键激活。
Jetbrains全系列IDE稳定安全使用
一、DirectShow简介
DirectShow 是 Windows 平台上的流媒体框架,提供高质量的多媒体流采集 和播放功能。它支持多种媒体文件格式,包括 ASF、MPEG、AVI、MP3 和 WAV 文件,以及使用 WDM 驱动程序或更早的 VFW 驱动程序进行多媒体流式传输的 采集。DirectShow集成了其他DirectX技术,可以自动检测和使用可用的音视频硬件加速,也可以支持没有硬件加速的系统。
DirectShow 极大地简化了媒体播放、格式转换和采集 工作。但同时它也为用户自定义的解决方案提供了一个低级的流控制框架,让用户可以创建支持新文件格式或其他用途的DirectShow组件。
以下是一些使用 DirectShow 编写的典型应用程序:
DVD播放机
视频编辑应用
AVI 到 ASF 转换器
MP3播放器
数字视频采集
DirectShow 建立在组件对象模型 (COM) 之上,因此当您编写 DirectShow 应用程序时,您必须具备 COM 客户端编程知识。对于大多数应用程序来说,您不需要自己实现COM对象,DirectShow提供了您需要的大部分DirectShow组件,但是如果您需要编写自己的DirectShow组件,您还需要具备编写COM组件的知识。
1.1。DirectShow 支持的格式
DirectShow 是一个开放的框架,因此只要有合适的过滤器进行解析和解码,它就可以支持任何格式。DirectShow 默认支持以下文件类型和压缩格式:
注意:带*的需要Windows Media Format SDK支持
文件类型:
Windows 媒体音频 (WMA)*
Windows 媒体视频 (WMV)*
高级系统格式 (ASF)*
电影专家组 (MPEG)
音频-视频交错 (AVI)
QuickTime(版本 2 及更低版本)
WAV
国际电影节
非盟
SND
MIDI
压缩格式:
Windows 媒体视频*
ISO MPEG-4 视频版本 1.0*
微软 MPEG-4 版本 3*
Sipro 实验室 ACELP*
Windows 媒体音频*
MPEG Audio Layer-3 (MP3)(仅解压缩)
数字视频 (DV)
MPEG-1(仅解压缩)
MJPEG
电影院
Microsoft 本身不提供 MPEG2 *敏*感*词*,一些可用的 DirectShow MPEG2 硬件或软件*敏*感*词*由第三方提供。
1.2. 常见问题(摘录) 1.2.1。一般的问题
*DirectShow 支持哪些操作系统?
DirectShow 支持 Windows9X、Windows2000、Windows Me 和 Windows XP。
* 使用 DirectShow 需要多少 COM 知识?
应用程序开发人员只需要 COM 组件的基本知识:实例化 COM 组件、调用接口和管理接口的引用计数。过滤器开发人员需要更多。
*是否有 DirectShow 兼容硬件列表 (HCL)?
不可以。如果硬件兼容 DirectShow,DirectShow 将使用它们,如果没有兼容的硬件,DirectShow 使用 GDI 绘制视频,并使用 WaveOut 系列多媒体 API 播放音频。
*可以使用哪些语言编写DirectShow应用程序?
DirectShow 主要是为 C/C++ 开发而设计的。Visual Basic 只能使用其中的一小部分。可以通过 MS JScript 或 VB Script 支持基于脚本的 DVD 和 TV 应用程序。也可以用 Delphi 编写,但 SDK 文档没有提供。
* DirectShow 会通过托管代码实现吗?
目前没有这方面的计划。DirectX SDK 使用音频和视频播放类提供有限的托管播放功能。您可以使用 COM 互操作来创建托管代码 DirectShow 客户端应用程序,但出于性能原因,不建议创建在 CLR 上运行的过滤器。
*DirectShow 开发需要什么样的编译器?
任何能够生成 COM 对象的编译器都可以。
*DirectShow与DirectX其他组件的关系
DirectShow 和 DirectX 的其他组件在内部进行通信。DirectShow 使用具有硬件支持的 DirectSound 和 DirectDraw。Video Renderer 和 Overlay Mixer 使用 DirectDraw 3 和 DirectDraw5 表面。Video Mixing Renderer 7(仅限 WINXP)使用 DirectDraw7 表面。Video Mixing Renderer 9 使用最新的(当前为 Directx9)Direct3D API 函数。即使应用程序收录 DirectX 的其他组件,您也不必使用其他组件的 API 来编写它。请参阅 SDK 示例:Texture3D 示例。
*DirectShow 和 ActiveMovie 的关系?
ActiveMovie 是 DirectShow 的原名,现已不再使用,但部分 API 仍保留“AM”前缀,如 AM_MEDIA_TYPE 和 IAMVideoAccelerator。
* DirectShow 是否仅限于多媒体应用程序?
DirectShow 中默认收录的组件主要是为音频和视频流设计的,但是,DirectShow 框架已成功用于其他数据流解决方案。
*GraphEdit 工具有源代码吗?GraphEdit.exe 是可再发行的吗?
没有源代码,没有重新分发。
*DMO可以代替DirectShow滤镜吗?
鼓励 DMO 在编写编码器、*敏*感*词*和效果应用程序时替换 DirectShow 过滤器。在其他应用程序中,使用 DirectShow 过滤器可能更合适。
1.2.2。编程问题
* 如何搭建编译环境,需要哪些头文件和库?
参考“设置构建环境”章节
*GraphEdit 列出了许多未记录的过滤器,它们是什么?
GraphEdit 将系统中注册的所有过滤器枚举为过滤器类型,包括由第三方应用程序安装的过滤器,以及由其他 Microsoft 技术(如 Windows Media 或 NetMeeting)安装的过滤器。此外,某些 DirectShow 过滤器用于硬编码或硬编码。解码驱动程序的外壳。Microsoft H.263 视频编*敏*感*词*用于 NetMeeting,DirectShow 不再支持。
* 如何知道 DirectShow 已经安装?
调用 CoCreateInstance 以创建 Filter Graph Manager 的实例。如果成功,说明 DirectShow 已经安装。这是一个例子:
IGraphBuilder *pGraph;
HRESULT hr = CoCreateInstance(CLSID_FilterGraph,
NULL, CLSCTX_INPROC_SERVER,
IID_IGraphBuilder, (void **) &pGraph);
* 如何在不通过属性设置页面的情况下更改过滤器设置?
当然是通过filter提供的接口。如果不提供,就没有办法
* DirectShow 可以通知应用程序当前的播放位置吗?
没有提供回调通知位置,需要使用定时器周期性调用 IMediaSeeking::GetCurrentPosition 方法获取当前播放位置。
*过滤器在哪个特权级别下运行?
运行在 Ring 3 权限级别,一些流控驱动程序(如音频和视频 采集 驱动程序)运行在 Ring 0 权限级别。
*需要内核调试器?
这取决于具体的项目。安装 DirectX 调试运行时库意味着安装调试驱动程序和其他内核模式组件,因此如果您的应用程序在这些组件之一(调试断言)中生成调试断言,除非您有内核调试器,否则您的计算机将自动重新启动。
* DEFINE_GUID 宏是如何工作的?
使用 DEFINE_GUID 宏允许您通过收录相同的头文件来定义 GUID 值,而无需使用 extern关键词。比如你的项目中有三个源文件:src1.cpp、src2.cpp、src3.cpp,它们都使用相同的GUID值,并且为了保证一致性,这个GUID在你的项目中只能定义一次,在这个在这种情况下,其他源文件必须定义外部引用才能使用它。使用 DEFINE_GUID,您可以在所有源文件中收录相同的头文件,并在头文件中定义 GUID,如下所示:
DEFINE_GUID(CLSID_MyObject,
0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
本例中GUID为0。实际编程中,请使用Guidgen工具生成GUID。在其中一个源文件中,在头文件之前收录 initguid.h,例如:
// src1.cpp
#包括
#include "MyGuids.h"
// Src2.cpp
#include "MyGuids.h"
// Src3.cpp
#include "MyGuids.h"
在不包括 Initguid.h 的情况下,DEFINE_GUID 宏创建一个外部引用以使用 GUID 值,在包括 Initguid.h 的情况下,DEFINE_GUID 重新定义 DEFINE_GUID 宏以生成 GUID 定义。
如果你没有在任何地方添加 Initguid.h,你会得到一个链接器错误:“unresolved external symbol.”,如果同一个 GUID 收录 Initguid.h 两次,你会得到一个编译错误“redefinition; multiple initialization.h”。 " 要解决这些问题,请确保仅收录一次 Initguid.h。另外,不要在预编译头文件中收录 Initguid.h,因为每个源文件都会收录预编译头文件。
整套解决方案:【SEO】2020年互联网营销必备:付费和免费的最佳SEO工具
2020 年互联网营销必备:最佳 SEO 工具,付费和免费
随着搜索引擎不断磨练他们的技能,搜索引擎优化 (SEO) 也在不断变化。这就是为什么您需要有关有效 SEO 工具的最新报告来打动企业和 SEO 专家的原因。
以下是您可以在 2020 年实际使用的 10 个必备工具:
•谷歌搜索控制台
•无处不在的关键字
• 尖叫的青蛙
•WooRank
•回答公众
•Ahrefs
• Moz 临
•SEMrush
•雄伟
• 乌鸦工具
下面,我将概述适合您独特预算和业务目标的最佳免费和付费 SEO 工具。
准备好找出是什么让他们脱颖而出并开始提升您的排名了吗?继续阅读!
▶ 5 款最佳免费 SEO 工具
如果您可以添加强大的工具来补充您的 SEO 活动而不会破坏银行,那么从那里开始是有意义的。
一些最好的 SEO 工具是免费的,它们仍然是经过试验和测试的资源,用于查找有用的关键字、头脑风暴内容主题、评估 网站 和查看反向链接。
1.谷歌搜索控制台
作为一个主要的搜索引擎,谷歌提供强大的工具来支持 SEO 策略也就不足为奇了。使用 Google Search Console,您可以直接免费为您的 URL 建立索引,接收有关 网站 问题的通知,并获得优化建议。
使用 Google Search Console,您还可以利用 Google Search Analytics,它显示自定义关键字的性能。谷歌搜索分析和谷歌搜索控制台一起工作,所以你可以从分析页面开始。
这是最好的 SEO 检查器之一,因为它提供了可操作的进度区域来推动您的自然流量更高。
在 WebFX,我们还有一个免费的 SEO 检查器,可以为您的 网站 特定关键字打分。继续看看您的 网站 是否对 SEO 友好,或者您是否需要加强 SEO 游戏。
2.关键词无处不在
关键字研究是成功的 SEO 策略的核心,Keywords Everywhere 是适用于 Chrome 和 Firefox 的便捷浏览器插件,可提示有关关键字趋势的详细信息。
当您输入一个潜在的关键字时,它会提供有关搜索量、竞争和 CPC 价值的信息。查询流行度数据有助于制作优质内容和取悦观众。
Keywords Everywhere 不仅包括 Google,它还在 Bing、YouTube 和其他 网站 上运行。
仅作为扩展工具提供,并带有信息丰富的编译数据,您只需打开一个新的浏览器选项卡即可开始您的 SEO 研究。
3. Screaming Frog SEO Spider(免费版)
在审核像 网站 这样的搜索引擎时,Screaming Frog SEO Spider 是足智多谋的。它充当爬虫来审核您的 SEO 策略并从机器人的角度提出建议。
页面上的快速反馈是这个 SEO 蜘蛛最吸引人的品质之一。它实时诊断您的 网站 的 SEO 健康状况。
作为一个高度分析的工具,它可以彻底检测出谷歌或必应爬虫关心的众多排名因素。它会查找重定向、服务器错误、链接断开、重复内容和其他排名障碍。
Screaming Frog SEO Spider 暴露了许多需要 TLC 的弱点。如果您有空白或重复的元描述,它会引起您对这些不好的事情的注意。
4. WooRank(免费版)
另一个方便的 Chrome 扩展程序 WooRank 可以告诉您您使用的任何 网站 的状态。如果 网站 没有现有分数,您可以要求快速检查 WooRank。
WooRank 根据关键字性能和内容结构等 SEO 标准对 网站 进行评分,并显示页面不足的地方。它还对你做得好的地方做出了积极的评价。
对于 SEO 内容优化,扩展指出了标题标签、标题、链接等的影响。
它在可用性和移动优化等类别中分解了您的表现,因此它涵盖了其他免费工具无法评估的许多基础。这是一个全面的插件,您也可以使用它来侦察您的竞争对手。
5.回答公众
深入了解用户问题可以增强关键字定位并帮助您创建与目标客户的搜索意图相匹配的内容。
Answer the Public 可以根据搜索、相关查询和比较来组织描述性问题。丰富的问题可以集中您的关键字定位和内容创建,这对于 SEO 来说是无价的。
由于谷歌和其他搜索引擎密切关注用户体验,它们可以通过满足搜索者的需求来提高排名。
“回答公众”之所以被列入最佳 SEO 工具组,是因为它能够将简单的单字搜索变为可能。尽管免费版本有其局限性,但它提供了丰富的信息,可以提高您在搜索引擎结果页面 (SERP) 中的可见性。
▶ 5 款付费 SEO 工具
虽然免费工具很有帮助,但投资一些高级工具可以带来更多收入和合格的潜在客户。许多工具都物有所值,并且深入了解所有付费功能可以全面了解您的 SEO。
以下是排名前五的付费 SEO 工具。
1. Ahrefs
价格:每月 99 美元起
长期以来最受欢迎的 Ahrefs 被广泛用于 SEO,即使在 2020 年,它仍然是经验丰富的营销人员的工具包。
Ahrefs 拥有一系列工具,包括排名跟踪、网络监控、内容和关键字研究、竞争分析和反向链接研究。
拥有至少 16 万亿个已知链接和持续爬取,它们的索引是巨大的。它最赚钱的功能是站点浏览器,它分析反向链接并采集深入的研究。
在他们的资源中,他们提供了一个免费的 SEO 工具栏,用于报告著名的搜索引擎指标。
2.莫兹临
价格:每月 99 美元起
Moz Pro 被广泛认为是一种 SEO 工具,因为它将多种功能打包到一个多合一套件中。
特别是对于大型企业,Moz Pro 提供了大量组件来帮助您提高利润。从抓取到关键字研究,它突出了 SEO 的不同阶段,能够专业地监控活动的发展。
Moz Pro 在本地和全国范围内都具有出色的知名度前景。它的报告可帮助您实施真正的建议、链接机会和内容质量注意事项。
3. 雄伟
价格:每月 49.99 美元起
Majestic 的背后是一个高级链接智能图,非常适合掌握您的 网站 在 Internet 上的位置。
Majestic 有一个站点浏览器、反向链接历史检查器和搜索浏览器,可以更*敏*感*词*地定位您的页面。
特别是在链接构建中,它可以提供您的 网站 全景图,以便您进行正确的调整。它批量检查反向链接,Majestic 甚至提供“主题信任流”以显示您与行业权威的距离。此外,它的机器人可以跨领域(甚至是竞争对手)进行筛选,这可以使您成为有竞争力的竞争对手,并提供精确的数据来制定您的战略。
它也是一种更实惠的付费 SEO 工具,因此您可以维持营销预算。
4. SEMrush
价格:每月 99.95 美元起
SEMrush 是一种营销软件,可提升您在搜索引擎眼中的在线形象。如果您想看到流量的自然激增,您可以利用基于事实的洞察力来扩大您的影响力并改善您的 SEO 实践。
它擅长比较域名及其相关关键字排名,让您可以进入竞争对手的高级关键字。
SEMrush 的解决方案突出了许多技术分析,因此您可以保持您在搜索引擎上的位置。他们的软件包括 28 个工具来改进您的 SEO 策略,并提供通过内容、博客和产品页面使用关键字的指南。
5. 乌鸦工具
价格:每月 79 美元起
Raven Tools 是领先的现场审核员,与多个类似产品相比,它已开发出跟踪和报告功能。
Raven Tools 以可读的格式对您的 网站 SEO 进行评分。一旦您知道自己的目标,您就可以将战略中的差距转化为成功。
无论您有流动性问题还是对页外 SEO 一无所知,Raven Tools 都可以节省大量时间。它的 17 个指标可以窥探您的 网站 实践,并允许您为 Google 和相关引擎增强您的页面、代码、设计和布局。