我正在使用directshow过滤器来多路复用vp8和vorbis。最重要的是,我正在实时发送(实际上是尝试发送) webm文件。所以没有正在创建的文件。当数据在编码后被打包到webm中时,我将其发送到套接字。
filesinker筛选器使用IStream进行文件IO。并且它大量使用寻道操作。我不能使用它。因为我不能在一个插座上寻找。
是否有人实现或知道如何使用此多路复用器,以便查找操作不会被调用。或者可能是具有队列的多路复用器上的版本,以便其支持分段。
谢谢
我使用的是www.webmproject.org提供的directshow过滤器
发布于 2012-09-22 15:24:37
在写入器上实现IStream允许多路复用器更新写入的流/文件中的交叉引用。因此,它们不必按顺序编写,这对于大多数容器格式来说都是不可能的,除非创建巨大的缓冲区或临时文件。
现在,如果您在运行时创建文件以逐步通过网络发送,我猜您正在尝试实现这一点,您不知道多路复用器将在什么时候、在哪里更新以关闭该文件。是否要重新访问文件开头的数据并更新引用、标头等。
您应该先创建完整的文件,然后再交付它。或者,您需要替换整个写入器,并将所有写入传递到套接字,包括覆盖已存在的数据。然而,通过网络传递实时数据的最合适的方法是根本不传输文件。发送方发送单独的流,接收方使用它们,或者在接收后多路复用到文件中,然后这是必要的。
https://stackoverflow.com/questions/12503065
复制相似问题