Я пытаюсь смоделировать потерю данных в видео, выборочно удаляя данные битового потока H.264. Данные представляют собой просто необработанный файл H.264, который по сути является двоичным файлом. Мой план состоит в том, чтобы удалить 2 байта на каждые 100 байтов, чтобы достичь потери 2%. Со временем я буду проверять эффективность некоторых алгоритмов маскирования ошибок вектора движения.
Было бы неплохо сделать это в среде Unix. До сих пор я немного изучил команду xxd и смог сохранить определенную часть шестнадцатеричного дампа из двоичного файла. Например, чтобы пропустить первые 50 байтов двоичного потока битов и сохранить последующие 100 байтов, я бы сделал следующее:
xxd -s 50 -l 100 inputBinaryFile | xxd -r > outputBinaryFile
Я надеюсь включить нечто подобное в скрипт bash, который автоматически удалит последние 2 байта на 100 байтов. Кроме того, я хотел бы, чтобы скрипт пропускал все до второго появления последовательности 00 00 01 06 05
(стартовый код первого P-кадра SEI).
Я не знаю, насколько проще это может быть на языке Си, но мои навыки программирования весьма ограничены, и я предпочел бы сейчас заниматься только программированием на Linux, если это возможно.
Спасибо.