2011-12-16 7 views
1

하나의 파일로 여러 부분으로 나눠서 제 3 자 C++/C# 플러그인을 하나의 파일로 읽고 싶습니다. 기본적으로, 플러그인 파일 판독기가 하나의 파일 부분의 끝 부분에 도달하면 다음 부분으로 계속 진행합니다.하드 링크를 사용하여 연결 파일을 시뮬레이션 하시겠습니까?

은 (관심있는 사람들을 위해, 플러그인은 Aforge.Net는 FFmpeg이고, 나는 VOB 파일을 가져올하려고)

그것은 플러그인을 재 프로그램하는 것은 매우 작업처럼 보인다. 다른 해결책은 파일 부분을 연결된 파일에 복사하는 것입니다. 그러나 많은 GB의 데이터를 처리하기 때문에 속도가 느립니다.

파일 시스템 하드 링크를 사용하여 여러 파일을 가리킬 수 있습니까? 또는 연결된 파일을 '가짜'로 만드는 다른 방법이 있습니까? 커맨드 라인 FFMpeg를 사용하여 'type'을 사용하여 스트림을 연결하여 파일을 스트리밍 할 수 있지만이 플러그인을 사용하여 C#으로 달성하는 방법을 알 수는 없습니다.

나는 하나의 파일에 윈도우 7에

답변

0

없음이 아닌, 하드 링크 점을 생각하지 않는다.

당신은 앱이 타사 응용 프로그램입니다 추가 된 복잡성을 가지고 ... 예를 들어 난 단지 그래서 특정 경로에 대한 파일 방법 를 오버라이드 (override) 동적 객체를 작성하는 것입니다 볼 수있는 유일한 솔루션, read() 첫 번째 파일부터 시작하여 세 번째 파일을 완성한 후 두 번째 파일로 이동합니다. 어. 행운을 빕니다!

1

하드 링크는 하나의 I- 노드 만 참조 할 수 있으므로 하드 링크가 도움이되지 않습니다. 그러나 FIFO 또는 명명 된 파이프가 사용됩니다. UNIX 쉘에서, 당신이 할 수있는 "catenated"파일에서 읽어

$ mkfifo catenated 
$ cat a b c >catenated & 

프로그램을 이제 모든 세 개의 파일 수 (A, B 및 C) 함께 연결된 것입니다. 세 파일의 데이터를 모두 읽으면 "cat"프로그램이 종료됩니다. Microsoft Windows에는 이러한 기능이 있습니다 (named pipe 참조).

파이프는 검색 할 수 없습니다. 연결된 데이터를 읽는 프로그램이 찾기를 시도하면 실패합니다. 연결을 검색 할 필요가 있다면, 좀 더 복잡한 (가상 파일 시스템 인 FUSE?) 사용해야합니다.

+0

파이프는 FFMPEG에서 작동하지만 C#에서 파이프를 사용하는 방법을 알 수 없습니다. 플러그인은 경로 문자열을 입력으로 기대합니다. – Sugrue

+0

확인. 조금 읽어봐. Named Pipes는 .NET 3.5에서 지원됩니다. 이제 명명 된 파이프를 어떤 종류의 경로 문자열로 바꾸는 방법을 찾아야합니다! – Sugrue

+0

또 다른 문제가 있습니다 만, 이것은 한 번만 고양이가됩니다. cat 명령을 반복하는 추가 프로그램이나 다른 것들이 필요합니다. _ 그리고 한 번에 두 번 이상 읽을 수는 없습니다. – fge

0

avisynth으로 처리하는 것이 가장 좋습니다. 내가 사용한 지 수년이 지났지 만 IIRC를 사용하여 비디오 파일 연결을 스크립트로 작성하여 단일 파일로 표시 할 수 있습니다. 세부 정보는 기억이 나지 않지만 스크립트 파일은 마치 비디오 파일 인 것처럼 동작하며 대부분의 비디오 편집 응용 프로그램에서 소스로 사용할 수 있습니다.