Ligne de commande fusionner une séquence de fragments de fichiers binaires se chevauchant dans Windows ou Linux


3

J'ai un ensemble de morceaux de fichiers binaires à partir d'un fichier vidéo. Ils se chevauchent en partie.

Pour illustrer cela, disons que les données binaires du fichier vidéo peuvent être représentées comme ceci:

---ABCDEFGHIJKLMNOPQRSTUVXYZ 

--- 

est un en-tête.

Les morceaux peuvent être représentés comme ceci (simplifié car il y a quelques différences dans la partie en-tête pour chaque morceau):

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

J'ai besoin d'un outil de ligne de commande qui fusionne ces fichiers. Il doit prendre la partie finale du morceau 1, rechercher le motif dans le morceau 2, joindre le morceau 1 à la partie du morceau 2 du motif pour terminer (en ignorant toutes les données du morceau 2 avant le début du motif).

Répétez ensuite l'opération pour tous les morceaux restants jusqu'à ce que nous ayons le fichier vidéo complet.

Réponses:


1

Je me suis souvent efforcé d’atteindre le même objectif plusieurs fois lorsqu’il s’agissait de flux de transport MPEG scindés en plusieurs parties par le périphérique d’enregistrement.

Le problème principal est que, dans deux fichiers consécutifs, la zone de chevauchement n’est jamais exactement identique dans les deux cas, puisqu’un en-tête est toujours ajouté à chaque fichier. Donc, fondamentalement, aucun des outils de fusion existants ne fonctionnait pour moi.

En fin de compte, j’ai utilisé un éditeur hexadécimal simple, comme le suggérait @TrojanName, mais j’ai vite trouvé ce processus manuel beaucoup trop fastidieux et sujet aux erreurs. Par conséquent, j'ai décidé d'écrire un petit outil appelé binmergequi le fait automatiquement.


Si votre outil fait le travail, c'est la meilleure réponse jusqu'à présent. Je ne peux pas auditer votre code et je ne vais pas compiler et tester l'outil dans un avenir proche pour vérifier s'il fonctionne. Je ne m'attends à personne. Néanmoins, tout semble légitime et j'aimerais vous remercier pour votre attitude. Certaines de mes réponses correctes (je pense) à des questions de niche ne sont ni votées, ni votées, peut-être parce que personne ne s'est donné la peine de les tester. Je vote cette réponse parce que vous partagez votre travail. Les autres utilisateurs doivent savoir que mon vote par tour ne signifie pas que l'outil a été testé.
Kamil Maciorowski

0

Je voudrais juste utiliser un bon éditeur binaire et le faire à la main.


0

Si vous connaissez la longueur de l' en- tête (---) et la longueur de chaque segment (A, B, C, etc.) , vous pouvez utiliser headet tailcommandes. Si ces longueurs varient d'un fichier à l'autre, vous êtes alors confronté à un problème de recherche de sous-chaîne (recherchez la plus grande sous-chaîne de l'élément 2 qui apparaît dans l'élément 1). Vous pourrez peut-être l'automatiser avec awk ou avec Python.

Pour obtenir une réponse à cette question, vous pouvez demander à stackoverflow. Néanmoins, si vous ne souhaitez rejoindre qu'un seul flux vidéo, je suis d'accord avec Brian Fenton.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.