• WMENC_SOURCE_TYPE=6?

    2007-02-13

    WMENC_SOURCE_TYPE=6?

    上周这个问题困扰了我好几个小时,今天有时间记下来。

    上周修改公司的一个直播编码器(基于Windows Media Encoder SDK开发),有一个功能是列出系统中所有的可用视频/音频设备。我们使用了种叫osprey的采集卡,总是无法区分出是视频还是音频设备。研究了一下sdk的api,发现一个函数:

    HRESULT get_MediaType( WMENC_SOURCE_TYPE* penumMediaType ); 

    调用此方法应该就可以得到当前的设备是哪种类型,好不高兴,试验了一下,还是没有检测出我想要的设备。

    不得不Debug 了,结果很是奇怪,返回的值竟然是6,再看WMENC_SOURCE_TYPE的定义:

    typedef enum WMENC_SOURCE_TYPE{

    WMENC_AUDIO = 1, WMENC_VIDEO = 2, WMENC_SCRIPT = 4, WMENC_FILETRANSFER = 8

    }; 

    只有这四种值,那6是哪来的?经验判断,估计6是WMENC_VIDEO和WMENC_SCRIPT的“或 ”,测试一下果然得到了结果。

     虽然结果正确了,还是不放心,刚才又上Google找到一个文章,正在是类似的问题:http://www.tech-archive.net/Archive/Media/microsoft.public.windowsmedia.encoder/2005-01/0213.html

    基本上是这个结果了。

     今天又有需求了,要求做成类似Windows Encoder的那种,在播放时可以显示出进度条和音频的音量指示,晕,感觉自己像块砖一样,什么地方需要就到什么地方去,有时真是受不了了,就在这里发发牢骚先。

    越发喜欢Groovy了,强大,简单,最近又在项目中小试了一下,好使得很。

    过年了,还没有搞到票,郁闷啊,难道要到初一才能回吗?:(

    该死的票贩子,昨天去北站问了一下,一张票要1000块,原价可是连200都不到,飞机票也没有这么贵。

     


    收藏到:Del.icio.us




    评论

  • 请问,你的音量显示的功能有没有完成?我找了很久显示音量的接口都没有找到。另外你有没有做编码预览,我们在做编码预览的时候出现一个问题是:装了encoder的机子就可以正常预览,没装的就不行。如果有遇到同样问题,你是怎样解决了。已经被这两个问题困扰很久,help
  • 1,2,4,8这四个数选择的真巧妙,它们之间任意两个值相加(也就是求或)的和,都不会与其它两个值的和混淆。

    这样就可以判断混合资源了,比如单独的声音源会得到1,声音加脚本的混合源会得到5。
    agilejava回复wantal说:
    果然,你这一提醒我才发现有这么一个逻辑,高人啊~_~
    2007-07-27 23:53:14

发表评论

您将收到博主的回复邮件
记住我