解决方案 »

  1.   

    使用Windows Media Format SDK的编辑器接口由于在VB中使用COM接口的API必须得自己写类型库
    所以这里不好写代码推荐陆其明写的《Windows Media编程导向》
    对WMF SDK讲得很详细
      

  2.   

    我想用纯VB代码,国内流行的千千静听以前也用过WMP的库,但现在都不需要了,不就是读写文件嘛,VB做解码器也许不行,但ASF格式里的标签只不过是一个文件标志而已,找到标志读取它都没有问题,问题是若要写入的话,尤其是写入的标签比原来长,那就不知道如何扩展文件了,关键是没有资料没有看得懂的资料,呵呵:)不就是写个演唱、歌名嘛,实在是不想劳烦WMP大驾,呵呵
      

  3.   

    说实话,真的很困难!另外,偶并不认为会E文的老外都是程序员:)
    说到底,那些E文资料也只不过是辅助编程而已,
    现在遇到的最实际问题,就是在程序里不知道ASF格式的Data对象和Index对象的具体GUID值,
    所以无法扩展文件,如果光找一个不懂编程的老外来,他也不会知道的,即使让他去找,可能他连方向都不知道在哪里了,呵呵:)另外有个疑问,是不是一旦扩展某个标签,真的要重写整个文件吗?那不是很慢?
    好像看到Header对象里有很多的0字节,不知道是不是也能用起来?
    由于不想用WMP,所以那些用SDK的办法好像并不适用吧?还请各位老大指点一下,谢谢!(PS:E文是要学滴,程序现在就要用第。但学习E文是个长期的艰苦的奋斗过程,要以革命烈士为榜样,发扬伟大红军万里长征吃苦耐劳的精神不过,也没见到谁,因为不会开车就不坐车嘛。用起来先,呵呵:)
      

  4.   

    不可能通过根据文件格式读取信息的这是因为WMA、WMV是开放性文件格式
    Microsoft在定义它们的文件结构时,只定义框架,具体数据编码靠解码器来定义
    只有装了对应的解码器,才能解出文件中的数据(这就是“就是在程序里不知道ASF格式的Data对象和Index对象的具体GUID值”的由来)
    若没有解码器,谁都无法解开文件中的数据所以最正规办法是调用WMF SDK,然后WMF去查解码器,再得到你所需的信息若是想通过识别文件格式的办法
    那么得弄明白现在所有的WMF解码器的编码细节
    这绝对是单个程序员无法完成的
    而且每一年都有大量的新解码器出现及老解码器更新
      

  5.   

    //国内流行的千千静听以前也用过WMP的库,但现在都不需要了现在Windows系统都绑定WMP了
    就算某些OEM版将WMP去掉了
    但至少会有WMF SDK、常用解码器
    (注意WMF是流媒体播放接口,而不是Windows Media Player)
    (WMP是调用WMF实现的,只是做了个界面而已)估计千千静听以前是由于技术不够
    用了WMP的库
    现在直接用WMF SDK
    自然不需要多余的东西了现在的播放软件哪一个是自己写解码器的?
    全是调用解码器(只有豪杰解霸的MPEG解码是自己写的)
    导致现在播放软件泛滥
      

  6.   

    ASF格式再怎么变三大对象(Header、Data、Index(可省))总是不变的吧?我们现在要的只是写入标签而已,最多也只是在Header对象里折腾,
    也犯不着去解码Data对象吧?现在的实际做法就是把整个Header对象读出来,修改指定的标签后,连同其它未知的子对象再合并Data及Index对象原样写回整个文件。
    以前就是这样做的,修改后的标签WMP都能正常使用的。这个办法对WMA问题不大(总是要写入全部文件的)
    但要是对付庞大的的WMV 那可就麻烦了,总不见得我把歌曲标题从 "A"改为"AB"就要再次读写全部文件吧?所以,想请问一下,在Header对象中,哪些是最基本、最必须的子对象(如解码器信息等),这样若写入标签长度大于原来时,可仅保留必须的子对象,而用那些非必须的子对象的空间来补充,最重要的目的就是避免重写整个Data对象(毕竟它们总是最大的部分)
    因为,偶看见在Data对象前好像总是有大堆大堆的空字节。
    如果那些可以归俺用就好了(贪心,嘿嘿)偶对那些什么多媒体数据编码一窍不通,但ASF好在是以对象为基本结构的,偶只需要关心标签所在的Header对象就可以了。
    这所有的操作只不过是读写二进制文件而已,根本不需牵涉到什么解码部分。
    唯一的问题,就是不知道那些必须的子对象的具体值!所以不能随心所欲的替换它们。要是让俺知道哪些是必须的子对象的话,俺一定编一个ASF净化器,Kill掉那些鬼才知道有什么用的垃圾对象,呵呵:)
      

  7.   

    //所以,想请问一下,在Header对象中,哪些是最基本、最必须的子对象(如解码器信息等)
    不可能全部知道
    因为这也可以自定义的
    所以极有可能需要变更Data区
    //因为,偶看见在Data对象前好像总是有大堆大堆的空字节。
    页面对齐,提高缓存效率
    //这所有的操作只不过是读写二进制文件而已,根本不需牵涉到什么解码部分。
    任何文件都是二进制文件
    最底层文件操作都是读取二进制信息
    但是,现在的文件格式越来越复杂
    特别开始流行开放式文件格式和流媒体格式
    它们都存在复杂的索引信息及未知子块
    这是需要众多的对象协同合作才能解析文件内容(COM技术带来的“副作用”,只要定义好接口,任何人都可根据该接口实现自己的东西)
    也就是说,对象内容层离底层的文件数据层已经很遥远这就像:告诉你CPU各个引脚的电平状态,你能知道现在运行的是什么程序吗?
    从CPU工作原理来说,这是可以办到的
    但这是超过绝大多数人的能力极限的(其中还有一个很重要的原因是:我们不知道操作系统在指令一级的运行细节)
    所以我们一般调用ToolHelp API来枚举进程信息
      

  8.   

    //不可能全部知道那请问有谁知道点什么?到现在没看见一个对象值啊 :(除了自定义格式的作者本人以外,还有没有第二个人知道哪些非自定义格式的标签?难道WMF需要全部的自定义格式才能播放?连木马广告之类的也需要?就没有可省的对象了吗?ASF的一大优点,都是以对象为单位组成的,基本框架也就是遇到解码器不知道的对象就跳过,并不影响下一个对象的解读。难道N多的自定义格式都是必须的?还请各位老大帮帮忙,我不需要知道那些鬼才知道有啥用的子对象(我只要吃了它们的空间)
    我只想要做到本主题,现在代码基本已就绪,只等着关键的GUID值或子对象标志了,谢谢!锅已经烧开了,就等着下粥了,现在没空去选种子、种稻、插秧、收割了,看水都烧干了,
    请施舍点米吧,谢谢啦!:)偶的做法就是重写整个Header对象,除了我的标签外,删除一切非必须对象,我管他啥劳什子的自定义呢,只为了扩展我的空间,若还是超出Header大小,就截断标签,就这么简单。关键也就一句话,在Header对象里,哪几个关键对象是不能覆盖的?
    请问这些对象的标志是多少?如果真的无法知道哪些是关键对象的话,那WMF凭啥知道哪些是必须的呢?
    (偶并不以为WMF会认为{141592653589793}这个对象也是必须的吧?:)
      

  9.   

    //如果真的无法知道哪些是关键对象的话,那WMF凭啥知道哪些是必须的呢?每个区块都有GUID的
    WMF读取GUID,再根据该GUID创建COM对象
    再访问该COM对象确认是否能播放若没有解码器
    那些COM对象自然没有注册
    那么创建会失败若解码器发现缺少某些关键区块
    那它会设置对象状态
    然后WMF检查对象状态时会发现无法播放我以前看过WMA、WMV的文件格式,被它搞晕了
    以上观点只是我对WMF的理解,觉得它应该是那样设计的,不敢保证绝对正确
      

  10.   

    区块不一定都有GUID,一般只有主对象才有。
    每个ASF文件至少呵呵,也至多只能有一个Header对象其GUID值为:
    {75B22630-668E-11CF-A6D9-00AA0062CE6C}
    此对象存放着一些非解码数据,如编码器所需版本等等,其中标签信息可能存放在两个地方:
    一个是{75B22633-668E-11CF-A6D9-00AA0062CE6C}Content_Description子对象
    更常用的是{D2D0A440-E307-11D2-97F0-00A0C95EA850}Extended_Content_Description子对象
    至于多媒体数字信号编解码器是存放在{86D15240-311D-11D0-A3A4-00A0C90348F6}子对象中,其中就记录了关键的编码信息等重要数据。现在读写这些对象都没有问题,
    我的目标就是不触动Data数据主对象,毕竟相对来说Header对象所占空间较小,
    我只要重写整个Header对象就可,想请问各位老大,除了上述几个是必须的子对象外(标签对象虽然是可选的,但俺就是要用的嘛,所以就变成必须的啦)还有哪些是必须的子对象?
    键值是多少?(偶不要没用的常数,偶要的是具体的键值!)
    我想要的只是覆盖Header中非必须的子对象而已(不会触动到其它如Data对象的)
    (我不会也不需要去解码它们的,只是照原样写入而已。)
      

  11.   


    求购视频会议源代码!
    用提供者请电:
    [email protected]
      

  12.   

    用Windows Media 文件编码器可以对ASF和WMV格式的文件进行标签和基本信息的设置!
      

  13.   

    老大,请看标题啊!
    ASF也只不过是二进制文件,读写文件谁不会啊。
    (还用得着劳烦WMP大驾吗)
    问题是,不知道哪个GUID标志不能覆盖啊!难道离开了WMP,ASF文件就变成了量子?成了不确定性?
      

  14.   

    在Windows编码器的SDK里面有关于这样的例子