Имитировать объединенный файл, используя жесткую ссылку? - PullRequest
1 голос
/ 16 декабря 2011

У меня есть несколько частей одного файла, которые я хочу, чтобы сторонний плагин c ++ / c # читал как один файл. По сути, когда программа чтения файлов плагинов попадает в конец одной части файла, я хочу перейти к следующей.

(Для всех, кто интересуется, подключаемый модуль - Aforge.Net FFMpeg, и я пытаюсь импортировать файлы VOB)

Выглядит как задача перепрограммировать плагин. Альтернативное решение состоит в том, чтобы скопировать части файла в объединенный файл, но это происходит медленно, потому что я имею дело со многими ГБ данных.

Можно ли использовать жесткую ссылку файловой системы для указания на несколько файлов? Или есть какой-то другой способ «подделать» составной файл? Используя командную строку FFMpeg, я могу использовать 'type' для прямой трансляции файла конкатенации, но я не могу понять, как этого добиться в c # с помощью этого плагина.

Я на Windows 7.

Ответы [ 3 ]

1 голос
/ 16 декабря 2011

Жесткая ссылка может ссылаться только на один I-узел, поэтому жесткая ссылка не поможет.FIFO, или именованный канал, однако, будет.В оболочке UNIX вы можете сделать:

$ mkfifo catenated
$ cat a b c >catenated &

Программа, которая читает из файла "catenated", теперь объединит все три файла (a, b и c) вместе.Как только данные из всех трех файлов будут прочитаны, программа «cat» прекратит работу.Microsoft Windows также имеет такие функции (см. именованный канал ).

Обратите внимание, что канал недоступен для поиска.Если программа, считывающая объединенные данные, попытается выполнить поиск, произойдет сбой.Если конкатенация должна быть доступной, необходимо использовать что-то более сложное (виртуальная файловая система? FUSE?).

0 голосов
/ 16 декабря 2011

Это может быть лучше всего обработано с помощью avisynth . Прошло много лет с тех пор, как я его использовал, но IIRC, вы можете использовать его для создания сценариев конкатенации видеофайлов, чтобы они отображались в виде одного файла. Я не могу вспомнить детали, но файлы сценариев ведут себя так, как будто они являются видеофайлами и могут использоваться в качестве источника в большинстве приложений для редактирования видео.

0 голосов
/ 16 декабря 2011

Нет, жесткая ссылка указывает только на один файл.

У вас сложность в том, что ваше приложение является сторонним приложением ... Единственное решение, которое я вижу, это написатьдинамический объект, переопределяющий методы файла только для определенного пути , так что, например, read() будет начинаться с первого файла, затем перейдет ко второму после завершения третьего и т. д.Удачи!

...