# \[script\] encodage de video

**URL:** <https://www.debian-fr.org/t/script-encodage-de-video/90177>\
**Category:** Support Debian\
**Tags:** bash\
**Created:** [Juillet 15, 2024, 12:44 UTC](https://www.debian-fr.org/t/script-encodage-de-video/90177 "2024-07-15T12:44:50Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![anon93295908](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/b782af/32.png) [@anon93295908](https://www.debian-fr.org/u/anon93295908)\
**Post date:** [Juillet 15, 2024, 12:44 UTC](https://www.debian-fr.org/t/script-encodage-de-video/90177/1 "2024-07-15T12:44:50Z")

</div>

Bonjour,

je suis encore sur mes vidéos. J’explique de nouveau.  
j’aimerai compresser mes vidéos. Et ensuite qu’elle se copie dans un répertoire avec son full chemin.

j’ai crée cette commande.

```
$ find /tmp/video -xdev -type f -name '*.mp4' | xargs -n 1 -I {} bash -c 'ffmpeg -i {} -vcodec libx265 -crf 28 /tmp/video-comp{} \;'

```

la commande plante car les répertoires de destinations n’existe pas.

avez vous une idée comment je peut procéder?

merci

---

<div class="post-metadata">

**Author:** ![MPython\_Alaplancha](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mpython_alaplancha/32/14038_2.png) [@MPython\_Alaplancha](https://www.debian-fr.org/u/MPython_Alaplancha)\
**Post date:** [Juillet 15, 2024, 1:46 UTC](https://www.debian-fr.org/t/script-encodage-de-video/90177/2 "2024-07-15T13:46:10Z")

</div>

Bonjour.

> [@anon93295908](#):
>
> la commande plante car les répertoires de destinations n’existe pas

Tu pourrais les créer avant ta cmd(que je n’ai pas testée) .  
`for fichier in $( find /tmp/video -xdev -type f -name '*.mp4'); do dest_dir="/tmp$(dirname "$fichier")"; mkdir -p "$dest_dir"; done`

---

<div class="post-metadata">

**Author:** ![dindoun](https://www.debian-fr.org/user_avatar/www.debian-fr.org/dindoun/32/4281_2.png) [@dindoun](https://www.debian-fr.org/u/dindoun)\
**Post date:** [Juillet 15, 2024, 11:38 UTC](https://www.debian-fr.org/t/script-encodage-de-video/90177/3 "2024-07-15T23:38:41Z")

</div>

> [@MPython\_Alaplancha](#):
>
> for fichier in $( find /tmp/video -xdev -type f -name ‹&nbsp;\*.mp4&nbsp;›); do dest\_dir=«&nbsp;/tmp$(dirname «&nbsp;$fichier&nbsp;»)&nbsp;»; mkdir -p «&nbsp;$dest\_dir&nbsp;»; done

ça ne va pas marcher ( trop de " )

---

<div class="post-metadata">

**Author:** ![MPython\_Alaplancha](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mpython_alaplancha/32/14038_2.png) [@MPython\_Alaplancha](https://www.debian-fr.org/u/MPython_Alaplancha)\
**Post date:** [Juillet 16, 2024, 4:36 UTC](https://www.debian-fr.org/t/script-encodage-de-video/90177/4 "2024-07-16T04:36:04Z")

</div>

```auto
     fab@fabien:/tmp$ tree video
    video
    ├── bambi
    │ └── yep.mp4
    ├── voyages
    │ └── truc.mp4
    └── yop.mp4

    3 directories, 3 files
    fab@fabien:/tmp$ for fichier in $( find /tmp/video -xdev -type f -name '*.mp4'); do dest_dir="/tmp/essai$(dirname "$fichier")"; mkdir -p "$dest_dir"; done
    fab@fabien:/tmp$ tree essai
    essai
    └── tmp
        └── video
            ├── bambi
            └── voyages

    5 directories, 0 files
    fab@fabien:/tmp$

```

---

<div class="post-metadata">

**Author:** ![MPython\_Alaplancha](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mpython_alaplancha/32/14038_2.png) [@MPython\_Alaplancha](https://www.debian-fr.org/u/MPython_Alaplancha)\
**Post date:** [Juillet 16, 2024, 6:54 UTC](https://www.debian-fr.org/t/script-encodage-de-video/90177/5 "2024-07-16T06:54:38Z")

</div>

(les guillemets sont nécessaires pour traiter le nom des fichiers comprenant par exemple des espaces ou des caractères spéciaux tel que le point d’interrogation…)

---

<div class="post-metadata">

**Author:** ![anon93295908](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/b782af/32.png) [@anon93295908](https://www.debian-fr.org/u/anon93295908)\
**Post date:** [Juillet 16, 2024, 9:33 UTC](https://www.debian-fr.org/t/script-encodage-de-video/90177/6 "2024-07-16T09:33:10Z")

</div>

J’ai trouvé et j’ai tester ceci avec rsync.

Cela fonctionne.

`rsync -av -f"+ */" -f"- *" "." "/tmp/video-comp"`

---

<div class="post-metadata">

**Author:** ![dindoun](https://www.debian-fr.org/user_avatar/www.debian-fr.org/dindoun/32/4281_2.png) [@dindoun](https://www.debian-fr.org/u/dindoun)\
**Post date:** [Juillet 17, 2024, 6:23 UTC](https://www.debian-fr.org/t/script-encodage-de-video/90177/7 "2024-07-17T18:23:44Z")

</div>

> [@MPython\_Alaplancha](#):
>
> les guillemets sont nécessaires pour traiter le nom des fichiers comprenant par exemple des espaces ou des caractères spéciaux tel que le point d’interrogation…)

oui, mais dans  
`for fichier in $( find /tmp/video -xdev -type f -name '*.mp4'); do dest_dir="/tmp$(dirname "$fichier")"; mkdir -p "$dest_dir"; done`

le guillemet de ferme avant le $ et s’ouvre après fichier

---

<div class="post-metadata">

**Author:** ![MPython\_Alaplancha](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mpython_alaplancha/32/14038_2.png) [@MPython\_Alaplancha](https://www.debian-fr.org/u/MPython_Alaplancha)\
**Post date:** [Juillet 19, 2024, 6:31 UTC](https://www.debian-fr.org/t/script-encodage-de-video/90177/8 "2024-07-19T06:31:30Z")

</div>

Je ne saisi pas le point que tu soulèves :  
dans `"/tmp$(dirname "$fichier")"` l’interprétateur bash évaluera d’abord la substitution de  
commande.

---

<div class="post-metadata">

**Author:** ![dindoun](https://www.debian-fr.org/user_avatar/www.debian-fr.org/dindoun/32/4281_2.png) [@dindoun](https://www.debian-fr.org/u/dindoun)\
**Post date:** [Juillet 22, 2024, 1:20 UTC](https://www.debian-fr.org/t/script-encodage-de-video/90177/9 "2024-07-22T01:20:04Z")

</div>

> [@MPython\_Alaplancha](#):
>
> l’interprétateur bash évaluera d’abord la substitution de  
> commande.

par habitude j’aurais dit non, mais il semble que tu aies raison.

par ailleurs ton script ne marchera pas avec des espaces dans les dossiers  
quand tu fais un for de ce genre il faut rajouter au début IFS=«&nbsp;\n&nbsp;»

pour éviter ça j’utilise maintenant la notation suivante :  
`find /tmp/video -xdev -type f -name '*.mp4' |while read fichier; do .... ; done`

---

<div class="post-metadata">

**Author:** ![MPython\_Alaplancha](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mpython_alaplancha/32/14038_2.png) [@MPython\_Alaplancha](https://www.debian-fr.org/u/MPython_Alaplancha)\
**Post date:** [Juillet 22, 2024, 5:57 UTC](https://www.debian-fr.org/t/script-encodage-de-video/90177/10 "2024-07-22T05:57:21Z")

</div>

> [@dindoun](#):
>
> ton script ne marchera pas avec des espaces dans les dossiers

Effectivement, j’ai oublié de protéger la substitution de commande dans mon approche : `for fichier in "$( find "/tmp/" -xdev -type f -name '*.mp3')"; do`
