Jochen Arndt
Сначала вам нужна спецификация формата файла. Видеть Формат Файла QuickTime - Википедия[^] для обзора и истории, а также Спецификация Формата Файла QuickTime[^] для справки.
Согласно справке, проигрыватель QuickTime файлы используют "атомы" для указания блоков данных. Каждый атом начинается с поля размера 4 байта, за которым следует поле типа. Таким образом, вы можете пройти через файл, читая размер и тип, при необходимости обработать следующие данные и возобновить работу на следующем этапе. атом добавляя размер к позиции файла.
Для чтения файла используйте любые функции библиотеки файлов C/C++, поддерживающие поиск (например , fopen()
, fread()
, fseek()
, fclose()
).
Если вам нужна дальнейшая обработка проигрыватель QuickTime файлы, которые я предлагаю использовать в библиотеке, а не делать это самостоятельно. Примерами могут быть GStreamer[^] и Видео[^].
Member 13119910
Я уже читал это, но я не знаю, как кодировать этот формат и как читать байты в заголовке видеофайла.
Так что помоги мне с этим
Jochen Arndt
Вы не знаете, как читать двоичные данные из файла?
uint32_t atom_size;
// Field has 4 characters. Use 5 byte NULL terminated buffer here
// to allow using strcmp().
char atom_type[5] = "xxxx";
FILE *f = fopen(fileName, "rb");
fread(&atom_size, sizeof(atom_size), 1, f);
fread(atom_type, 4, 1, f);
// Seek to next atom or read atom into allocated buffer
fseek(f, atom_size, SEEK_CUR);
На самом деле я не уверен, включает ли поле size поля size и type. Если это так, вычитайте эти размеры (8 байт) из atom_size при поиске или чтении.