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
Zargos
Juillet 8, 2025, 10:36
2
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
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
En tout cas merci
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…
Zargos
Juillet 8, 2025, 2:15
5
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 …
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
En tout cas un grand merci
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
Zargos
Juillet 8, 2025, 2:48
11
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’(index 2) +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
Zargos
Juillet 8, 2025, 2:52
13
Plus qu’à mettre le sujet en résolu en cochant le bon message