Fusionner des mp4 avec mdat après recupération cdrecord

Bonjour

Sur un disque dur HS, cdrecord m’a retrouvé plus de 500 videos mais splittées entre un fichier XXX**.mp4** et un fichierYYYY _mdat**.mov**

Bien sûr aucun préfixe ne correspond pour re fusionner les 2 fichiers et avoir une video lisible

Pour avoir une idée, un extrait du ls du répertoire :

f18681856.mp4        f3326976.mp4        f64920576.mp4       f97948672.mp4
f18683904_mdat.mov   f3329024_mdat.mov   f64922624_mdat.mov  f97950720_mdat.mov
f18757632.mp4        f33771520.mp4       f65760256.mp4       f98279424.mp4
f18759680_mdat.mov   f33773568_mdat.mov  f65762304_mdat.mov  f98281472_mdat.mov
f18877440.mp4        f33924096.mp4       f66705408.mp4       f98377728.mp4
f18879488_mdat.mov   f33926144_mdat.mov  f66707456_mdat.mov  f98379776_mdat.mov
f19036160.mp4        f34199552.mp4       f67406848.mp4       f99159040.mp4
f19038208_mdat.mov   f34201600_mdat.mov  f67408896_mdat.mov  f99161088_mdat.mov
f19089408.mp4        f34348032.mp4       f68794368.mp4       f99284992.mp4
f19091456_mdat.mov   f34350080_mdat.mov  f68796416_mdat.mov  f99287040_mdat.mov
f19225600.mp4        f34792448.mp4       f69074944.mp4       f9933824.mp4
f19227648_mdat.mov   f34794496_mdat.mov  f69076992_mdat.mov  f9935872_mdat.mov
f19470336.mp4        f34864128.mp4       f6961152.mp4        f99417088.mp4
f19472384_mdat.mov   f34866176_mdat.mov  f69632000.mp4       f99419136_mdat.mov
f19555328.mp4        f3496960.mp4        f6963200_mdat.mov   f99465216.mp4

J’ai donc cherché si des scripts existaient sur la toile. Ai bien trouvé celui ci ( https://forum.cgsecurity.org/phpBB3/viewtopic.php?p=32812&sid=181c87db968abfa58949f1b4ba14f073#p32812 ), mais toutes les videos de l’output sont sans image et sans son…

Quelqu’un aurait il déjà été confronté à ce soucis et si oui, comment le résoudre ? Un lien ? Un script ? Tout est le bienvenue, merci de votre retour d’expérience

Salut,

Fait un test comme ça:

cat file1.mp4 file2_mdat.mov > test.mp4

Les fichiers on été enregistrés avec le mdat atom séparé. Le tout est de retrouver les deux fichiers à appairer

1 J'aime

Yep un grand merci, ça a l’air de marcher

Je n’ai essayé que pour les 2 premiers, mais la fusion produit bien une video lisbible

Y a moyen d’automatiser cela car sinon je suis parti pour plus de 500 lignes de commande :wink:

En tout cas merci :wink:

Bon,
J’avance,

ls -t me sort une liste « ordonnée » alternant les mp4 et les mdat.mov

Je l’ai mis dans un fichier , reste plus qu’à faire un script

tant que des lignes
     cat ligne1  line2 > output_X.mp4

Reste plus qu’à coder le tout…

Ben tu prend les lignes impaire.
Fichier ligne impaire et ficher ligne paire qui suit

un truc pas très propre :

LOG="/tmp/machin.log"
no=100
fichmp4=""
ls |sort |while read fich ; do
if [ "$fichmp4" == "" ] ; then 
fichmp4="$fich";
else 
echo cat "$fichmp4" "$fich"  "$no".mp4 >> "$LOG"
cat "$fichmp4" "$fich" > "$no".mp4
fichmp4=""
let no=$no+1
fi
done

tu obtiens 100.mp4 101.mp4 …

1 J'aime

OK merci bien
J’étais perso arrivé à ça

#!/bin/bash

j=0
i=1
while IFS= read -r line; do
  if (( i % 2 == 0 )); then
    echo "Ligne paire: $line"
    p1=$line	
    ((j++))
    echo $j

  else
    echo "Ligne impaire: $line"
    p2=$line
    ((j=0))
    echo $j
  fi
	
  if (( j == 0 )); then
  cat "$p1" "$p2" > "$i".mp4
  fi

  ((i++))


done < ls.txt

Je vais comparer la sortie des deux :wink:

En tout cas un grand merci :wink:

ton j est inutile
si i n’est pas paire (else de i%2=0) alors cat"$p1" "$line"

Tout à fait !!! Je corrige mon script et teste le tien. Merci !

pour tester j’ai créé àa :
for i in $(seq 500 599);do echo "$i" > "$i".txt ; done

Personnellement je mettrait les noms de fichiers dans un tableau.
Ensuite faire une boucle sur le nombre de fichier divisé par deux (ils sont obligatoirement pairs), en commençant par zéro.
Ensuite prendre le fichier du premier index2, et de l’(index2) +1.
Et ainsi de suite.
Un minimum d’opération, une seule boucle.

Merci grâce à votre aide, j’ai récupéré plus de 400 videos
Un grand merci :wink:

Plus qu’à mettre le sujet en résolu en cochant le bon message :slight_smile: