Linha de comando mescla uma seqüência de blocos de arquivos binários sobrepostos no Win ou Linux

3

Eu tenho um conjunto de partes de arquivos binários de um arquivo de vídeo. Eles estão parcialmente sobrepostos.

Para exemplificar, digamos que os dados binários do arquivo de vídeo podem ser representados assim:

---ABCDEFGHIJKLMNOPQRSTUVXYZ 

onde

--- 

é um cabeçalho.

Os pedaços podem ser representados assim (simplificado porque existem algumas diferenças na parte do cabeçalho para cada pedaço):

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

Eu preciso de uma ferramenta de linha de comando que mescle esses arquivos. Ele deve pegar a parte final do pedaço 1, buscar o pedaço 2 para aquele padrão, juntar o pedaço 1 à parte do pedaço 2 do padrão ao fim (ignorando todos os dados no pedaço 2 antes do início do padrão).

Em seguida, repita a operação para todos os blocos restantes até que tenhamos o arquivo de vídeo completo.

    
por adainr 24.10.2011 / 17:38

3 respostas

1

Eu me encontrei tentando alcançar exatamente o mesmo objetivo várias vezes ao lidar com fluxos de transporte MPEG que foram divididos em várias partes pelo dispositivo de gravação.

O principal problema é que, dados dois arquivos consecutivos, a área sobreposta nunca é exatamente idêntica em ambos, já que algum tipo de cabeçalho é sempre anexado a cada arquivo. Então, basicamente, nenhuma das ferramentas de mesclagem existentes funcionou para mim.

No final, usei um editor hexadecimal simples, como o @TrojanName sugeriu, mas logo achei esse processo manual muito demorado e propenso a erros. Por isso, decidi escrever uma pequena ferramenta chamada binmerge que faz isso automaticamente.

    
por 06.07.2017 / 20:55
0

Eu usaria apenas um bom editor binário e faria isso manualmente.

    
por 07.01.2012 / 00:32
0

Se você souber o comprimento do cabeçalho (---) e o comprimento de cada segmento (A, B, C, etc), você pode usar os comandos head e tail . Se tais comprimentos variarem de arquivo para arquivo, então você está olhando para um problema de busca da substring (pesquise a substring maior no pedaço 2 que aparece no pedaço 1). Você pode ser capaz de automatizá-lo com o awk ou com o Python.

Para obter uma resposta para isso, convém perguntar em stackoverflow. No entanto, se você tiver apenas um fluxo de vídeo que deseja participar, concordo com Brian Fenton.

    
por 07.01.2012 / 01:02