0

我正在使用 directshow 过滤器来混合 vp8 和 vorbis。最重要的是,我正在实时发送(尝试实际发送)webm 文件。所以没有创建文件。由于数据在成为编码器后被打包到 webm 中,因此我将其发送到套接字。

filesinker 过滤器使用 IStream 进行文件 IO。它大量使用了seek操作。我不能使用。由于我无法在套接字上寻找。

有没有人实现或知道如何使用这个多路复用器,以便不调用搜索操作。或者也许是带有队列的复用器上的一个版本,以便它支持碎片。

谢谢

我正在使用 www.webmproject.org 提供的 directshow 过滤器

4

1 回答 1

1

on writer的实现IStream允许多路复用器更新写入的流/文件中的交叉引用。因此,它们不必按顺序写入,这对于大多数容器格式来说是不可能的,而无需创建巨大的缓冲区或临时文件。

现在,如果您在运行时创建文件以通过网络逐步发送,我想您正在尝试实现,您不知道多路复用器将在何时何地更新以关闭文件。是否要重新访问文件开头的数据并更新引用、标题等。

您应该先创建完整的文件,然后再交付它。或者您需要替换整个编写器并将所有写入传递到套接字,包括对现有数据的覆盖。然而,通过网络传递实时数据的最合适的方法是根本不传输文件。发送方发送单独的流,接收方要么直接使用它们,要么在接收后多路复用到文件中,这是必要的。

于 2012-09-22T07:24:36.827 回答