나 자신의 비디오 파일 형식을 만들고 파일 헤더와 프레임 헤더를 쓰고 싶습니다. 난 그냥 같은 정의 된 자리가 순간 C#에서 FileStream을 사용하여 파일 헤더를 쓰는 방법
:fsVideoWriter.Write(fileHeader, 0, FILE_HEADER_SIZE);
이 프레임 헤더 :
byte[] fileHeader = new byte[FILE_HEADER_SIZE * sizeof(int)];
byte[] frameHeader = new byte[FRAME_HEADER_SIZE * sizeof(int)];
은 내가 파일 헤더에 대해 다음 사용하여 쓰는
fsVideoWriter.Write(frameHeader, 0, FRAME_HEADER_SIZE);
이제 실제로 이러한 헤더를 올바르게 사용해야 할 필요가 있는지 머리글과 별도의 변수가 필요한 개별 필드를 쉽게 읽을 수 있는지 확신 할 수 없으므로 필기 방법이 가장 편리합니다.
나는 다음과 같은 일을 생각 :[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct FileHeader
{
public int x;
public int y;
public int z;
// etc. etc.
}
내가 (즉, 버전 번호 포함), 파일 형식이 발전함에 따라 내가 쉽게 업그레이드 할 수있는 방법으로 그것을 정의하고 싶습니다. 파일/프레임 헤더를 정의하는 데 권장되는 방법입니까? 그렇다면 .NET FileStream 클래스를 사용하여 읽고 쓰는 방법은 무엇입니까? 이것이 권장되는 방법이 아니라면 누군가가 이미 이런 종류의 일을 처리하는 일반적인 비디오 파일 관련 클래스를 만들었을 때 적절한 방법을 제안하십시오.
Marshal.PtrToStructure() 및 Marshal.StructureToPtr()을 사용할 수 있다고 생각하지만 비 관리 코드를 사용하지 않는 것이 좋습니다. – gonzobrains