关闭

DirectShow应用——支持Windows Media格式

标签: windowsfiltergraph微软input扩展
6021人阅读 评论(1) 收藏 举报
分类:

 

 

大家知道,微软定义了自己的一种媒体文件类型,叫做ASFAdvanced Systems Format)。ASF其实是一个文件“容器”,它本身并没有规定音视频的压缩格式;在ASF文件中,我们可以包含任何格式的压缩的(包括MPEG-4)、或非压缩的数据。另外,微软提供了独立于DirectX开发环境以外的Windows Media Format SDK(以下简称WMFS ,专门用于支持客户开发ASF相关的应用。那么,我们能不能在DirectShow中开发ASF的应用呢?

 

答案是肯定的。因为ASF是微软自己的媒体格式,它当然会得到特别的关照。微软提供了一系列的Filter。只是这些Filter的版本关系比较复杂,我们下面先来整理一下。

 

最早从Windows Media Player (微软的媒体播放器,以下简称WMP6.4,微软使用了一个叫Windows Media SourceFilter,来支持ASF文件的播放。这个Source Filter默认与.asf.wmv.wma扩展名文件关联(即在调用IGraphBuilder::RenderFileIGraphBuilder::AddSourceFilter来播放上述扩展名的文件时,Filter Graph Manager会自动使用Windows Media Source Filter)。下面是典型的使用Windows Media Source Filter来播放ASF文件的Filter Graph参考图:

DirectShow 8.0开始,微软提供了另外两个FilterWM ASF ReaderWM ASF Writer。并且随着DirectShow版本的更新,这两个Filter的版本也在不断更新。(DirectShow 8.1中的这两个Filter使用了WMFS 7.0DirectShow 9.0中的使用了WMFS 7.1。)但是,尽管如此,为了保持向后兼容性,微软还是让Windows Media Source Filter作为播放.asf.wmv.wma文件的默认Source Filter。直到WMFS 9.0(包含有最新版本的WM ASF ReaderWM ASF Writer)的发布,WM ASF Reader才真正完全取代了Windows Media Source Filter。下面是典型的使用WM ASF Reader来播放ASF文件的Filter Graph参考图:

 

理清了上述的版本关系,编写一个播放一般的ASF文件的应用程序,应该没有什么问题了。而播放另外一些特殊的ASF文件,比如经过了DRM Digital Rights Management)保护的文件,我们还需要提供一些特殊的处理。(更多技术细节请参考SDK中的PlayWndASF例子,这里就不再赘述。)下面,我们要来看一下如何生成我们想要的ASF文件。

 

上文已经提及,ASF是一个文件“容器”。.asf扩展名是这种格式文件的“统称”,而如果我们生成的Window Media文件只包含音频,我们一般使用.wma扩展名,如果只包含视频、或同时包含音视频,我们一般使用.wmv扩展名。使用WM ASF Writer,有一个重要的概念就是配置(Profile)。通过配置,我们可以设定WM ASF Writer有几个Input pin、生成文件的比特率、压缩质量等等。当WM ASF Writer创建的时候,使用了一个系统默认的配置。如果这个配置不符合我们的具体应用,我们可以通过Filter上的IConfigAsfWriter接口改变配置。有一点需要注意的是,我们在配置WM ASF Writer之前,必须先把它加入到Filter Graph中,而必须等到配置完成后才能进行Pin的连接;运行Filter Graph之前,WM ASF Writer的所有Input pin都要求完成连接,而且各个Input pin上的输入数据要求都是打好时间戳的。还有一个重要的概念需要提醒,WMFS规定,ASF文件必须以音频为基准来播放。所以,一般WM ASF Writer总是需要一个音频的Input pin,即使这个Pin上只是输入一些静音的、低码流的数据。下面是常见的WM ASF Writer三种应用,可供参考:

提示:构建上述Filter Graph,一般有两种切实可行的方法。一种是,一个一个地加入各个Filter,配置WM ASF Writer(如果系统默认配置不符合具体应用时),然后完成整个Filter链路的连接;另一种方法是,使用IGraphBuilder::RenderFile首先构建源文件的播放链路,然后将Renderer FilterFilter Graph中移除,再加入WM ASF Writer,进行必要的配置后完成最终的连接。

 

总之,微软提供的WM ASF ReaderWM ASF WriterASFDirectShow中的应用提供了“天然的”支持。我们可以在DirectShow环境下,很方便地开发出ASF的应用程序。

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

DirectShow应用——支持Windows Media格式

DirectShow应用——支持Windows Media格式
  • chenlycly
  • chenlycly
  • 2016-09-26 16:48
  • 236

Windows下用DirectShow查找摄像头(含分辨率)和麦克风

在视频聊天、视频会议、在线监控和视频展台等项目中,需要查找出本地电脑上连接的所有摄像头,网上流传比较多的方式是ffmpeg的方式,这种方式可以跨平台,不同的平台下调用不同的库。这种方式在控制台直接打印...
  • VoidLuffy
  • VoidLuffy
  • 2017-01-03 13:38
  • 489

各种media格式说明

MPEG格式:它的英文全称为Moving Picture Expert Group,即运动图像专家组格式,家里常看的VCD、SVCD、DVD就是这种格式。MPEG文件格式是运动图像压缩算法的国际标准,...
  • Jackwen123
  • Jackwen123
  • 2014-01-16 09:07
  • 791

DirectShow 播放mp4编码 视频

转载 自 : http://blog.csdn.net/wuanshi5/article/details/50392111 最主要的开发资料还是在 : http://blog.csdn.net/s...
  • xiaojun111111
  • xiaojun111111
  • 2016-08-09 14:49
  • 1596

一个清华学子写的关于directshow的学习心得【转】

学习DirectShow有一段时间了,把这段学习过程中翻译出来的SDK与大家分享,同时也希望专家们指出我理解上的错误,万分感谢。 1. DirectShow介绍     DirectShow是一个wi...
  • wishfly
  • wishfly
  • 2015-11-18 10:30
  • 9822

编解码学习笔记(七):微软Windows Media系列

资料来源于wiki与 http://chaoqunz.blog.163.com/blog/static/6154877720084493941186/。 Microsoft 公司主导的音频视频编...
  • mandagod
  • mandagod
  • 2016-06-10 13:59
  • 720

Win7下设置DirectShow编译环境小结(特别的x64位环境)

1. 下载DirectShow 由于现在directShow没有和direcxtx一起发布,而是和windows sdk 打包发布了,Windows SDK 7.1 地址:http://www.mic...
  • dijkstar
  • dijkstar
  • 2016-03-19 22:32
  • 2723

DirectShow Filter 基础与简单的示例程序

DirectShow 是一个 Windows 平台上的流媒体框架,提供了高质量的多媒体流采集和回放功能。 Filter 实质是一个 COM 组件,所以学习开发 Filter 前你应该对 COM 相关...
  • 91program
  • 91program
  • 2014-06-05 07:32
  • 2405

windows media player 控件的常用属性及方法【转载】

windowsmediaplayer 控件在我们编程时经常要用到,但是有很多属性及方法却不知道该怎么使用。(JavaScript中用法几乎完全相同)。     假设此控件名为wmp ...
  • zhongxia245
  • zhongxia245
  • 2014-04-13 23:04
  • 1374

DirectShow流媒体数据的采集及图片的捕获

流媒体的处理,以其复杂性和技术性,一向广受工业界的关注。特别伴随着因特网的普及,流媒体在网络上已广泛应用﹐怎样使流媒体的处理变得简单而富有成效逐渐成为了焦点问题。选择一种合适的应用方案,将事半功倍。此...
  • xuqiang918
  • xuqiang918
  • 2013-02-03 10:44
  • 827
    个人资料
    • 访问:1189147次
    • 积分:15431
    • 等级:
    • 排名:第839名
    • 原创:53篇
    • 转载:10篇
    • 译文:135篇
    • 评论:1616条
    文章分类
    最新评论