Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/07/2014, à 14:48

alfirdaous

Mini script bash

Bonjour,

Je voudrais mettre un petit script afin de recevoir quelque chose comme:

d_1-Original.mp4
d_2-Original.mp4

Le code est:

#!/bin/bash
read -p "Please enter starting area : " areaStart
read -p "Please enter ending area : " areaEnd
read -p "Please enter original file name : " fileName

printf '%s\n' {"$areaStart".."$areaEnd"} | xargs -i ffmpeg -i "$fileName"_{}-Original.mp4

Le resultat est:

d_{1..2}-Original.mp4: No such file or directory

Merci a vous

Hors ligne

#2 Le 18/07/2014, à 14:55

jplemoine

Re : Mini script bash

C'est quoi le but à l'origine ?
Je pense que ta solution n'en est pas une...


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#3 Le 18/07/2014, à 15:26

Watael

Re : Mini script bash

salut,

les variables ne sont pas développées entre accolades, parce que ces dernières sont développées avant les premières.

avec des variables, il faut encore utiliser seq sad
ou, en lourdingue, une boucle avec une incrémentation.

mais je suis d'accord avec jplemoine, dis-nous en davantage sur ton projet : ce que tu as, ce que tu veux...

Dernière modification par Watael (Le 18/07/2014, à 15:28)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#4 Le 18/07/2014, à 15:34

alfirdaous

Re : Mini script bash

ce que je veux faire c'est d'effectuer un traitement de 5 fichiers videos avec cette commande, donner le debut et la fin de numerotation ainsi que le nom du fichier

ffmpeg -i INPUT.mp4 -strict experimental -vf "drawtext=fontfile='/usr/share/fonts/truetype/freefont/FreeSansBold.ttf':text='TEST':x=5:y=30:fontsize=16:fontcolor=white" -vcodec libx264 -preset medium -crf 24 -acodec copy OUTPUT.mp4

Hors ligne

#5 Le 18/07/2014, à 15:39

Watael

Re : Mini script bash

en full bash:

read debut
read fin
for ((i=debut;i<=fin;i++)); do echo "traitement fichier #$i"; done

Dernière modification par Watael (Le 18/07/2014, à 15:41)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#6 Le 18/07/2014, à 15:48

alfirdaous

Re : Mini script bash

pas moyen d'utiliser

printf '%s\n' {001..005} | xargs -i 

Hors ligne

#7 Le 19/07/2014, à 13:00

alfirdaous

Re : Mini script bash

j'ai essaye avec for, ca marche bien, juste un soucis dans cette commande:

read -p "Please enter starting area : " areaStart
read -p "Please enter ending area : " areaEnd
read -p "Please enter original file name : " fileName
read -p "Please enter texte size : " textSize
read -p "Please enter output PNG file : " filePNG



for ((i=areaStart;i<=areaEnd;i++));
do
  printf -v f '%03d' $i
n=0; for offset in 200 220 240 260 280 320 340 360 380 400; do n=$((n+1)); ffmpeg -itsoffset -$offset -i "$fileName"_$f.png -vcodec mjpeg -vframes 1 -an -f rawvideo -s 640x480 "$filePNG"_"$f"_$n.png; done

j'obtiens ce resultat:

n=0; for offset in 200 220 240 260 280 320 340 360 380 400; do n=1; ffmpeg -itsoffset - -i FILE_001.png -vcodec mjpeg -vframes 1 -an -f rawvideo -s 640x480 PNG_001_.png; done && ffmpeg -i FILE_001.mp4 -vn -ar 44100 -ac 2 -ab 128 -f mp3 001.mp3

Anomalies au niveau des variables "-$offset" et "$n.png"

Merci pour votre aide

Hors ligne

#8 Le 19/07/2014, à 17:58

pingouinux

Re : Mini script bash

Bonjour,
Dans ton script en #7, il manque le done final. Peux-tu montrer le script exact que tu as lancé ?

j'obtiens ce resultat:

n=0; for offset in 200 220 240 260 280 320 340 360 380 400; do n=1; ffmpeg -itsoffset - -i FILE_001.png -vcodec mjpeg -vframes 1 -an -f rawvideo -s 640x480 PNG_001_.png; done && ffmpeg -i FILE_001.mp4 -vn -ar 44100 -ac 2 -ab 128 -f mp3 001.mp3

Comment as-tu obtenu cette ligne ?
Y a-t-il un message d'erreur ?

Hors ligne

#9 Le 19/07/2014, à 18:03

alfirdaous

Re : Mini script bash

voici le script, j'ai le soucis seulement au niveau des variables:

#!/bin/bash

read -p "Please enter starting area : " areaStart
read -p "Please enter ending area : " areaEnd
read -p "Please enter original file name : " fileName
read -p "Please enter texte size : " textSize
read -p "Please enter output PNG file : " filePNG



for ((i=areaStart;i<=areaEnd;i++));
do

  printf -v f '%03d' $i

echo "ffmpeg -i Original/$fileName"_"$f-Original.mp4 -strict experimental -vf "drawtext=fontfile='/usr/share/fonts/truetype/freefont/FreeSansBold.ttf':text='www.test.com':x=5:y=30:fontsize="$textSize":fontcolor=white" -vcodec libx264 -preset medium -crf 24 -acodec copy Done/"$fileName"_$f-Done.mp4 && MP4Box -add Done/"$fileName"_$f-Done.mp4 "$fileName"_$f.mp4 && ffmpeg -itsoffset -330 -i "$fileName"_$f.mp4 -vcodec mjpeg -vframes 1 -an -f rawvideo -s 640x480 "$filePNG"_$f.png && n=0; for offset in 200 220 240 260 280 320 340 360 380 400; do n=$((n+1)); ffmpeg -itsoffset -$offset -i "$fileName"_$f.png -vcodec mjpeg -vframes 1 -an -f rawvideo -s 640x480 "$filePNG"_"$f"_$n.png; done && ffmpeg -i "$fileName"_$f.mp4 -vn -ar 44100 -ac 2 -ab 128 -f mp3 $f.mp3";

 done;

Hors ligne

#10 Le 19/07/2014, à 18:46

pingouinux

Re : Mini script bash

Ton script est illisible. Tu devrais le montrer tel qu'il devrait être (sans le echo), et en séparant les commandes (une par ligne). Tu peux déjà vérifier le bon positionnement des " ".

Hors ligne

#11 Le 19/07/2014, à 19:06

Watael

Re : Mini script bash

la "dernière" boucle `for' n'est évidemment pas exécutée dans le `echo' :\


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#12 Le 20/07/2014, à 08:36

hcm

Re : Mini script bash

Bonjour,

Une astuce pour t'aider à mettre au point ton script.
Place avant les commandes read la ligne suivante

set -x

et relance ton script.
Tu verras, instruction après instruction, comment se comporte l'interpréteur bash.
Tu pourras ainsi mieux comprendre où se trouve ton problème. Si tu ne trouves pas la solution par toi même, poste nous les traces de lancement de ton script, ça nous aidera à comprendre où ça coince.

Une fois le problème corrigé, tu pourras retirer cette ligne de ton code ou la commenter pour désactiver ces traces de débogage.


Ubuntu 22.04.1 LTS - 64 bits / Intel Pentium(R) Dual CPU E2200 @ 2.20GHz × 2 / 2 Go RAM / 1,1 To DD / Carte Graphique Intel G33

Hors ligne

#13 Le 20/07/2014, à 08:53

credenhill

Re : Mini script bash

Hors ligne

#14 Le 20/07/2014, à 17:04

alfirdaous

Re : Mini script bash

ce que je cherche exactement est le comportement des variables, j'ai des soucis la dans

Hors ligne