3

У меня есть набор фрагментов двоичного файла из видеофайла. Они частично перекрываются.

В качестве примера скажем, что двоичные данные видеофайла можно представить так:

---ABCDEFGHIJKLMNOPQRSTUVXYZ 

где

--- 

это заголовок.

Куски могут быть представлены следующим образом (упрощенно, потому что есть некоторые различия в части заголовка для каждого куска):

chunk 1: "---ABCD"
chunk 2: "---DEFG"
chunk 3: "---GHIJ"
chunk 4: "---JKLM"
...

Мне нужен инструмент командной строки, который объединяет эти файлы. Он должен занимать конечную часть фрагмента 1, искать фрагмент 2 по этому шаблону, соединять фрагмент 1 с частью фрагмента 2 от шаблона к концу (игнорируя все данные в блоке 2 до начала шаблона).

Затем повторите операцию для всех оставшихся фрагментов, пока у нас не появится полный видеофайл.

3 ответа3

1

Я пытался достичь одной и той же цели несколько раз, когда имел дело с транспортными потоками MPEG, которые были разделены на несколько частей записывающим устройством.

Основная проблема заключается в том, что при наличии двух последовательных файлов перекрывающаяся область никогда не бывает абсолютно одинаковой в обоих из них, поскольку какой-либо заголовок всегда добавляется к каждому файлу. Так что в принципе ни один из существующих инструментов слияния не работал для меня.

В конце концов, я использовал простой шестнадцатеричный редактор, как предложил @TrojanName, но вскоре обнаружил, что этот ручной процесс слишком трудоемкий и подвержен ошибкам. Поэтому я решил написать небольшой инструмент под названием binmerge который делает это автоматически.

0

Я бы просто использовал хороший бинарный редактор и делал это вручную.

0

Если вы знаете длину заголовка (---) и длину каждого сегмента (A, B, C и т.д.), Вы можете использовать команды head и tail . Если такие длины варьируются от файла к файлу, то вы смотрите на проблему поиска подстроки (ищите самую большую подстроку в чанке 2, появляющуюся в чанке 1). Вы можете автоматизировать его с помощью awk или Python.

Чтобы получить ответ на этот вопрос, вы можете спросить в stackoverflow. Тем не менее, если у вас есть только один видеопоток, к которому вы хотите присоединиться, я согласен с Брайаном Фентоном.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .