Файл ASF при сбое питания
Я использую WMWriterAdvanced и функцию WriteStreamSample для записи видеоданных в файл ASF, и если во время записи образцов возникает сбой питания, это приводит к потере последних 20 секунд, которые уже были записаны в этот файл. После проверки файла в ASFView я заметил, что последние 500 пакетов просто заполнены нулевыми байтами. Я понимаю, что при сбое питания возможно потерять некоторые данные, но кажется, что 20 секунд видео - это слишком много.
Почему уже написанные образцы повреждены и возможно ли уменьшить их количество?
1 ответ
Вероятная причина заключается в том, что, когда файл все еще открыт и записывается, внутренние файловые буферы еще не были сброшены на диск, и сбой питания привел к потере данных этих данных, а также части данных структуры / индекса. Поврежденная файловая структура может быть причиной невозможности увидеть даже некоторые данные, присутствующие в файле, но неправильно связанные с остальным содержимым - следовательно, неожиданно слишком много секунд потери данных.
Обычно файл, поддерживаемый файловой системой NTFS, имеет нули на фрагменте, где сбой питания не позволяет данным достигать постоянного носителя.