首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > 多媒体 >

directshow怎么获取视频文件的编码格式

2012-04-27 
directshow如何获取视频文件的编码格式1.我想实现对视频文件的手动链接(指定解码器)播放视频文件不同编码

directshow如何获取视频文件的编码格式
1.我想实现对视频文件的手动链接(指定解码器)播放视频文件
不同编码格式的视频文件需要不同的解码器来解码
但是相同后缀的文件里面封装的有可能是不同编码格式的媒体(比如同是.mpg,里面有可能是h264或mpeg-2)
所以我必须先知道文件的编码格式,然后才可以指定解码器
请问我在程序里改如何取得文件的编码格式?


2.还有个问题是我在之前手动链接的过程中遇到的问题:
就是我遍历filter的pin,然后根据pin的major type分别输送给音视频解码器,但是我取不到它的major type
事实上我遍历的时候是有2个pin,而且第一次取到的是视频pin,再取到的是音频pin(直接这样取然后链接解码器,OK)
请问这是什么情况?为什么会取不到它的major type?还有第一次取到的一定是视频pin麽?然后是音频pin?

感激您的关注和回复

[解决办法]
1.文件格式的解析主要依靠SourceFilter或者SplitFilter,这种类型的Filter可以针对自己所支持的文件类型,分离出对应的视频流和音频流,这样,就可以从PIN上的媒体属性获得流数据的编码格式了。
2.遍历PIN的时候,应该遍历SourceFilter或者SplitFilter上的PIN,这样应该可以获取到MajorType的,另外,第一次取到的未必是视频PIN,特别是多条流存在的时候,这个类型顺序主要依赖于产生PIN的FILTER是如何排序的。

[解决办法]
第一个问题个人觉得依靠第三方工具可能更简单一些,比如说mediainfo有个dll版可以获取各个frame的详细信息
另外不知道你有没有试过ffdshow解码可能更方便一些

第二个问题可能得贴贴代码看看

热点排行