在Directshow种的avi splitter filter在一开始播放前就要读avi文件的index chunk,但是avi文件的index chunk是在文件的末尾,然后再按照index chunk里的顺序来一帧一帧地读数据给decompressor filter。主要是Filter连接的时候,avi splitter会要求读取avi文件尾的一些信息,现在我得一个局域网视频点播系统,在使用Mpeg文件时能很正常的播放,但是对于avi文件,由于上面的原因,就没有办法一边传输一边播放了,有没有好的方法?有没有可能自己写一个avi splitter filter使得没有index chunk的情况下也能正常的播放文件?各位DX有没有好的方法?

解决方案 »

  1.   

    问题的症结在于DS对AVI解码的固定方式。我认为没什么好办法让DS以你希望的方式工作,唯一解决方法应该是自己写一个AVI解码器,将图像数据解到DIB中在交由WINDOWS显示。
      

  2.   

    那么,有许多的视频点播软件对于AVI的播放是如何处理的?
    楼上的能不能说一下具体改如何写?基本的步骤是什么?
    数据如何传输,如何解出图像数据等等
      

  3.   

    1.我没有做过视频点播软件,所以不好说。
    2.AVI是一种存放视频的多媒体文件格式,它包含的视频数据是不确定的,可以是MJPEG,MPEG4,也可以是其它类型的数据,这个要视你所接收到的具体文件而定;你根据所接收文件的视频格式,写一个解单帧图像的解码器(例如JPEG DECODER),将单帧数据解到DIB中,在MFC下如何显示一个DIB你应该知道吧。只要解码和刷新速度够快,就是一个视频播放器啊。DS肯定也是这么一个做法,只是它的效率高而已。
    3.真的要照我的建议进行的话,你必须熟悉AVI文件格式,至少是你可能接收到的AVI格式。
      

  4.   

    那位DX知道视频点播软件对于AVI的播放是如何处理的?
    给一点提示也可以!
      

  5.   

    另外,那儿有AVI格式的具体资料?
      

  6.   

    楼主:俺问一个简单的问题。
    我也用DirectShow开发程序,但总是出现链接错误(Tools->Options->Directories里面也包含的DirectX的东西),我还差什么Lib文件吗?
    谢谢!
      

  7.   

    write a filter that host a windows media stream server
    see IWMWriterNetworkSink Interface in Windows Media Format 9 Series SDK