1

我有一个文件的多个部分,我希望第 3 方 c++/c# 插件将其作为单个文件读取。基本上,当插件文件阅读器到达一个文件部分的末尾时,我希望它继续到下一个。

(对于任何感兴趣的人,插件是 Aforge.Net FFMpeg,我正在尝试导入 VOB 文件)

重新编程插件看起来像是一项艰巨的任务。另一种解决方案是将文件部分复制到连接文件中,但这很慢,因为我正在处理许多 GB 的数据。

是否可以使用文件系统硬链接指向多个文件?还是有其他方法可以“伪造”连接文件?使用命令行 FFMpeg 我可以使用“类型”来实时流式传输连接文件,但我无法弄清楚如何使用这个插件在 c# 中实现这一点。

我在 Windows 7 上。

4

3 回答 3

1

硬链接只能引用一个 I 节点,因此硬链接无济于事。但是,FIFO 或命名管道会。在 UNIX shell 中,您可以执行以下操作:

$ mkfifo catenated
$ cat a b c >catenated &

从“连接”文件中读取的程序现在会将所有三个文件(a、b 和 c)连接在一起。一旦读取了所有三个文件的数据,“cat”程序将终止。Microsoft Windows 也有这样的特性(参见命名管道)。

请注意,管道是不可搜索的。如果读取连接数据的程序试图寻找,它将失败。如果串联需要可查找,则需要使用更复杂的东西(虚拟文件系统?FUSE?)。

于 2011-12-16T13:17:30.017 回答
0

这可能最好用avisynth处理。我使用它已经有好几年了,但是 IIRC,您可以使用它来编写视频文件连接脚本,使它们显示为单个文件。我不记得细节了,但脚本文件的行为就好像它们是一个视频文件,可以用作大多数视频编辑应用程序的源。

于 2011-12-16T13:46:27.280 回答
0

不,不是,硬链接只指向一个文件。

您的应用程序是第三方应用程序会增加复杂性...我看到的唯一解决方案是编写一个动态对象,仅针对特定路径覆盖文件方法,例如,read()从第一个文件开始,然后在完成第三个等之后继续第二个。呃。祝你好运!

于 2011-12-16T13:11:15.123 回答