Vous n'êtes pas identifié(e).
Je mettrais ici que la première partie du script qui ne fonctionne déjà pas
test1
Unrecognized option 'ss 00:04:30.560 -to 00:30:08.440'.
Error splitting the argument list: Option not found
si je met un echo au début de ma commande j'ai pourtant bien les 3 lignes qui sorte sur la sortie standard
j'ai lu ceci sur le net
Si la boucle "while" reste la méthode la plus simple, elle a toutefois un inconvénient majeur, à savoir qu'elle annihile le formatage des lignes et notamment les espaces et tabulations
donc j'ai testé aussi la méthode suivante avec une boucle for
test2
même erreur , pareil si j'entoure ma vidéo de guillemet simple pour passer mon nom de fichier plein d'espace ffmpeg ne semble rien comprendre
test 3 avec un fichier de point de coupe de format différent
j'ai ainsi ajouté des variables debut et fin histoire de voir si je m'en sortait mieux
@ étant mon séparateur de champ
il veut rien comprendre l'animal , dans ma boucle cela ne fonctionne pas
si je test met les lignes par copier coller dans un fichier elles fonctionnent au poile
pour tester mes coupes j'ai fini par mettre les lignes dans un fichier , comme ceci
j'ai bien mes 3 séquences comme je veux
me rend dingue ce truc
l'article qui m'a servis
https://www.commentcamarche.net/faq/502 … -par-ligne
le script de base qui m'a inspiré
https://forum.ubuntu-fr.org/viewtopic.php?id=2052799
https://trac.ffmpeg.org/wiki/Concatenate
Dernière modification par Croutons (28-01-2022 18:29:16)
-->les cahiers du debutant<-- WikiDF-->Découvrir les principales commandes Linux<--
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde
Hors ligne
Edit:
Ton souci vient du développement de l'argument donné à ffmpeg.
Comme tu fais, il le prend pour un seul argument (espaces compris).
Normalement, le développement des éléments d'un tableau par la référence @ fait un mot par élément.
Exemple :
Edit2:
Contrairement à la référence * qui se développe en un seul mot (pour tous les éléments) :
Dernière modification par Tawal (27-01-2022 22:39:51)
Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
En ligne
La boucle while
Tout simplement
Edit:
Mise des guillemets autour des variables ss et to.
Edit2:
Comme je m'ennuie avant d'aller me coucher , j'ai fait un test de la boucle avec :
Bon $video et $extension ne sont pas initialisée, mais
Kwazi sûr ke sa march
Dernière modification par Tawal (28-01-2022 01:55:59)
Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
En ligne
C'est une histoire de découpage. Espace est un caractère spécial qui délimite des arguments, mais si tu en fait un "paquet" avec des guillemets, ça devient un caractère comme un autre dans une chaîne de caractère ; et ce qui était deux arguments "-l -s" devient une seule chaine de caractère avec un espace au milieu, pas prévue du tout. D'où l'erreur.
Dans certaines circonstances on est obligé d'utiliser des tableaux pour pouvoir stocker des "chaines avec des espaces" (c'est un problème très classique, et c'est casse tête quand on essaie de rester avec une écriture sans "bashism" - des notions propres à bash)
(...Moi aussi j'ai perdu des heures en comprenant pas les premières fois, d'où un syndrome typique des gens qui refusent de mettre des espaces dans leur noms de fichiers, même si c'est pas la seule raison )
Dernière modification par otyugh (28-01-2022 04:29:35)
Hors ligne
Substitution de commande inutile !
Et :
est inutile aussi, vu que tu renseignes les chemins complets de chaque fichier
Et :
Autant utiliser des variables pour stocker les noms de fichiers, vu que tu les utilises plus d'une fois
Dernière modification par Tawal (28-01-2022 11:02:40)
Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
En ligne
Hors ligne
Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
En ligne
puis je me suis souvenu d'une option que j'avais testé
donc avec l'option -nostdin + retrait des guillemets sa passe
-stdin
Enable interaction on standard input. On by default unless standard input is used as an input. To explicitly disable interaction you need to specify -nostdin.
Disabling interaction on standard input is useful, for example, if ffmpeg is in the background process group. Roughly the same result can be achieved with ffmpeg ... < /dev/null but it requires a shell.
https://ffmpeg.org/ffmpeg.html#toc-Main-option
j'ai testé ta solution Tawal qui passe avec echo il est vrai ce que j'avais constaté aussi dans mon test3
mais au final message d'erreur
et ceci sur les 3 séquences, au moins il a au moins le mérite d’être cohérent
Je me garde les autres solutions que j'ai pas encore testé avec le tableau
j'ai vu un truc interessant aussi sur read
de ce que je comprend les mots serait lu et stocké dans la variable ? (ARRAY0 , ARRAY1, ARRAY2 ....)
Je passe en résolu, ça devrait rouler se petit script
je n'ai trouvé aucun logiciel capable de comprendre l'extension des fichiers de ma Freebox (.m2ts)
j'ai survolé vite fais mon fichier recoller il a l'air bien, j'en suis pas encore sur , il faudrait que je regarde un film au complet
mais faire sauter les marges et ne plus avoir de pub c'est le must (le tout sans ré-encodage)
au final
ne pas oublier de créer le fichier coupe coupe_ffmpeg.txt
exemple:
en moyenne 3 sequences a recoller (concat) par film
bon a savoir avec une copie des flux ,sans ré-encodage donc, ffmpeg cherchera l'image clé avant le point de recherche
ce qui peut se traduire par des images indésirable d'ou mon utilisation d'une timeline qui me permet de me positionner sur les images clé
Dernière modification par Croutons (28-01-2022 15:54:32)
-->les cahiers du debutant<-- WikiDF-->Découvrir les principales commandes Linux<--
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde
Hors ligne
-->les cahiers du debutant<-- WikiDF-->Découvrir les principales commandes Linux<--
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde
Hors ligne
#!/bin/sh
video="$HOME/Bureau/truc.mp4"
seq="$HOME/Bureau/seq.txt"
dest="$HOME/Bureau/"
mkdir -p "$dest"
k=0
while IFS= read -r line
do
k=$((k+1))
ffmpeg -i "$video" $line -c:v copy -c:a copy "${dest}extrait-$(basename "$video")-${k}.${video##*.}"
done < $seq
Dernière modification par otyugh (29-01-2022 23:07:15)
Hors ligne
Dernière modification par Croutons (30-01-2022 08:52:28)
-->les cahiers du debutant<-- WikiDF-->Découvrir les principales commandes Linux<--
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde
Hors ligne
par exemple.
Et tu ne tiens pas compte de mes remarques, du coup je les répète :
Non !
Mais plutôt :
Pas de cd non plus, c'est inutile vu que les noms de fichiers sont en chemins absolu.
Et utilise des variables pour stocker les noms de fichiers utilisés plus d'une fois ==> facilité de lecture et de maintien du script
Perso, je pense qu'il faut revoir l'algorithme du script :
- on connaît l'entrée
- on sait ce que l'on veut en sortie
- reste plus qu'à bien définir chaque opérations nécessaires pour y arriver
En entrée : le fichier vidéo à traiter + le fichier coupe_ffmpeg.txt à créer avant.
En sortie : un fichier vidéo concaténé selon les séquences données par le fichier coupe_ffmpeg.txt
1ère question : sous quelle forme écrire le fichier coupe_ffmpeg.txt afin de "parser" ses données.
De ce fichier, il faut obtenir un timeline de début de séquence et un timeline de fin de séquence. Je pense que la forme citée au-dessus est suffisante.
Ensuite, de quelle données intermédiaire avons-nous besoin ?
- Les noms de fichiers de séquences extraites : ça tu sais faire (nom +compteur)
- Extraire les séquences selon le fichier coupe_ffmpeg.txt ==> boucle while ? ou simple commande ?
- Il faut aussi pouvoir redonner à ffmpeg la liste des séquences à concaténer sous la forme : file nom_de_la_séquence ==> tableau ?
Ta boucle for en plein milieu d'une commande ffmpeg est un peu douteuse ...
J'oublie certainement des choses, mais le plus gros est éclairci.
Tout cela se pense avant même d'écrire le shebang
Vu que ton script fonctionne en l'état, j'en profiterais (sauvegarde à l'appui) pour tenter de le ré-écrire avec plus de concision et de précision, voire d'efficacité.
Au plasir.
Edit PS :
Essaie de ne pas faire meugler shellcheck (installable via le paquet du même nom)
Edit2:
Illustration de l'avantage d'un tableau :
Dernière modification par Tawal (30-01-2022 11:35:22)
Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
En ligne
pour l'instant je laisse en stanby ,mais tes remarques sont toujours les bienvenus
je les reprendrait point par point pour peut être des améliorations futur
je retient l'astuce du shellcheck et du bash -x , avec geany en plus je peu bidouiller a loisir
Dernière modification par Croutons (30-01-2022 11:29:54)
-->les cahiers du debutant<-- WikiDF-->Découvrir les principales commandes Linux<--
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde
Hors ligne
Dernière modification par Tawal (30-01-2022 11:41:19)
Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
En ligne
Mais du coup, Avidemux ne pourrait-il pas faire tout ce dont tu as besoin ? (juste supprimer les séquences et enregistrer sous un autre nom).
ba il me semble que nom car il change obligatoirement le conteneur en sortie , avec une liste de choix
je pensais que juste en découpant le fichier et en recollant je n'aurais pas de soucis de lecture sur mon décodeur Freebox
mais du au protection ce n'est pas possible , a moins de le lire depuis un ordi relié a la TV
Sinon pour ce genre de chose j'utilise LossLessCut (en Appimage) sur mes fichiers mkv qui c'est un vrai merveille
Je suis conscient que mon script a plus grand intérêt du coup, c'est pas grave je suis plus a un script inutile près
cela me permet d'apprendre petit à petit
Regarde mon Edit2 de mon message précédent, c'est intéressant pour bien comprendre pourquoi je propose un tableau.
bon la il faudra attendre un peu que je digère le truc
Dernière modification par Croutons (30-01-2022 12:10:26)
-->les cahiers du debutant<-- WikiDF-->Découvrir les principales commandes Linux<--
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde
Hors ligne
Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
En ligne
mon script fonctionne bien mais je peux lire les fichiers créé que sur mon PC, beaucoup si sont cassé les dents avant moi
Quoi quoi ?
Pourquoi mettre la commande ffmpeg dans une boucle avec une répétition de coupe ?
Une seule commande avec toutes les coupes sur une ligne peut se faire aussi non ?
Pour la lisibilité ? x)
Hors ligne
Dernière modification par Croutons (30-01-2022 16:57:12)
-->les cahiers du debutant<-- WikiDF-->Découvrir les principales commandes Linux<--
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde
Hors ligne
Hors ligne
C'est un début mais ça fonctionne
PS: Toutes les coupes sont sur la même commande
Dernière modification par Anonyme (31-01-2022 08:08:57)
Dernière modification par Anonyme (31-01-2022 08:11:46)