Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 27-01-2022 19:29:55

Croutons
Membre
Distrib. : Debian10 Buster
Noyau : Linux 4.19.0-18-amd64
(G)UI : Mate
Inscription : 16-12-2016

[résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

Hello
J'ai pas mal cherché et essayé plusieurs manière d'arriver a ce que je veux mais la je sèche:(
L'idée est d'extraire de mon fichier vidéo source les séquences qui m’intéresse
pour repérer les points de coupe j'utilise une timeline précise qui me permet de repérer les image clé (Avidemux)

Premier essai j'ai mon fichier texte de la forme

cat ~/Vidéos/extraction/coupe_ffmpeg.txt


-ss 00:04:30.560  -to 00:30:08.440
-ss 00:36:25.040  -to 01:20:50.560
-ss 01:27:01.800  -to 01:51:21.320



Je mettrais ici que la première partie du script qui ne fonctionne déjà pas mad

test1

#numéro de séquence qui sera incrémentée
k=0

#test existence du répertoire d'extraction
if [ ! -d "$HOME/Vidéos/extraction" ] ; then mkdir $HOME/Vidéos/extraction ; fi

# test existence du fichier contenant les points de coupe
if [ ! -f $HOME/Vidéos/extraction/coupe_ffmpeg.txt ] ; then nano $HOME/Vidéos/extraction/coupe_ffmpeg.txt ; fi

# choisir la video source de l'extraction
video=$(zenity  --file-selection --title="Cliquer sur la vidéo à traiter puis valider " --multiple  --separator=" ")
var=$video
# pour avoir l'extension de la vidéo on enlève tout ce qui précède le dernier point  "."
extension=$(echo ${var##*.})

cd "$HOME"/Vidéos
#boucle de création des séquences, sauvegardées sous ~/Vidéos/extraction
while read line
do
  k=$((k+1))
  ffmpeg -i "$video" "$line" -c:v copy  -c:a copy "$HOME"/Vidéos/extraction/sequence"$k"."$extension"
done <"$HOME"/Vidéos/extraction/coupe_ffmpeg.txt



ffmpeg a écrit :

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

#boucle de création des séquences, sauvegardées sous ~/Vidéos/extraction
old_IFS=$IFS     # sauvegarde du séparateur de champ  
IFS=$'
'
    # nouveau séparateur de champ, le caractère fin de ligne
for line in $(cat "$HOME"/Vidéos/extraction/coupe_ffmpeg.txt)
do
  k=$((k+1))
  ffmpeg -i "$video" "$line" -c:v copy  -c:a copy "$HOME"/Vidéos/extraction/sequence"$k"."$extension"
done


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

00:04:30.560@00:30:08.440
00:36:25.040@01:20:50.560
01:27:01.800@01:51:21.320


@ étant mon séparateur de champ

#boucle de création des séquences, sauvegardées sous ~/Vidéos/extraction
while IFS=@ read debut fin
do
  k=$((k+1))
  ffmpeg -i "$video" -ss "$debut" -to "$fin" -c:v copy  -c:a copy  "$HOME"/Vidéos/extraction/sequence"$k"."$extension"
done <"$HOME"/Vidéos/extraction/coupe_ffmpeg.txt


Invalid duration specification for ss: -ss 01:27:01.800 -to 01:51:21.320


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

cat sequences.txt


ffmpeg  -i /home/stephane/Vidéos/Secret_défense.m2ts -ss 00:04:30.560 -to 00:30:08.440 -c:v copy -c:a copy /home/stephane/Vidéos/extraction/sequence1.m2ts
ffmpeg  -i /home/stephane/Vidéos/Secret_défense.m2ts -ss 00:36:25.040 -to 01:20:50.560 -c:v copy -c:a copy /home/stephane/Vidéos/extraction/sequence2.m2ts
ffmpeg  -i /home/stephane/Vidéos/Secret_défense.m2ts -ss 01:27:01.800 -to 01:51:21.320 -c:v copy -c:a copy /home/stephane/Vidéos/extraction/sequence3.m2ts


source sequences.txt



j'ai bien mes 3 séquences comme je veux kernal_panic.gif
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 19: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

#2 27-01-2022 23:26:14

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

Hello,

Essaie de passer par un tableau avec :

while read line
do
  k=$((k+1))
  mapfile -td" " TabLineCut < "$line"
  ffmpeg -i "$video" "${TabLineCut[@]}" -c:v copy  -c:a copy  "$HOME"/Vidéos/extraction/sequence"$k"."$extension"
done < "$HOME"/Vidéos/extraction/coupe_ffmpeg.txt



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 :

$ a=( a "b c" d )
$ printf "%s\n" "${a[@]}"
a
b c
d
$


Edit2:
Contrairement à la référence * qui se développe en un seul mot (pour tous les éléments) :

$ printf "%s\n" "${a[*]}"
a b c d
$

Dernière modification par Tawal (27-01-2022 23: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 !

Hors ligne

#3 28-01-2022 02:21:05

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

Sinon, je pensais à autre chose :
Fichier ffmpeg_coupe.txt :

00:04:30.560    00:30:08.440
00:36:25.040    01:20:50.560
01:27:01.800    01:51:21.320


La boucle while

while read -r ss to
do
   k=$((++k))
   ffmpeg -i "$video" -ss "$ss" -to "$to" -c:v copy  -c:a copy  "$HOME"/Vidéos/extraction/sequence"$k"."$extension"
done < "$HOME"/Vidéos/extraction/ffmpeg_coupe.txt  


Tout simplement wink

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 :

echo "ffmpeg -i $video -ss $ss -to $to -c:v copy  -c:a copy  $HOME/Vidéos/extraction/sequence$k.$extension"


$ bash test_coupe
ffmpeg -i  -ss 00:04:30.560 -to 00:30:08.440 -c:v copy  -c:a copy  /home/tawal/Vidéos/extraction/sequence1.
ffmpeg -i  -ss 00:36:25.040 -to 01:20:50.560 -c:v copy  -c:a copy  /home/tawal/Vidéos/extraction/sequence2.
ffmpeg -i  -ss 01:27:01.800 -to 01:51:21.320 -c:v copy  -c:a copy  /home/tawal/Vidéos/extraction/sequence3.
$


Bon $video et $extension ne sont pas initialisée, mais
Kwazi sûr ke sa march tongue

Dernière modification par Tawal (28-01-2022 02: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 !

Hors ligne

#4 28-01-2022 05:20:22

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : [résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

Sans utiliser de notion de tableaux (bashisme !), l'erreur ici était bêtement d'utiliser des guillemets ^^'

Petite illustration avec la commande ls

a="-l -s"
ls "$a"
#ne fonctionne pas, ls voit un seul argument "-l -s"

ls $a
#fonctionne, ls voit deux arguments -l -s qu'il sait gérer
 



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 tongue)

Dernière modification par otyugh (28-01-2022 05:29:35)


antifa.png feminism.png lgbtqi.png disarm.png kopimi.png
Pas de repos pour les oppresseurs ! (surtout quand c'est moi)

Hors ligne

#5 28-01-2022 11:53:39

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

Autre chose :

extension=$(echo ${var##*.})


Substitution de commande inutile !

extension="${var##*.}"



Et :

cd "$HOME"/Vidéos

est inutile aussi, vu que tu renseignes les chemins complets de chaque fichier wink

Et :

#test existence du répertoire d'extraction
if [ ! -d "$HOME/Vidéos/extraction" ] ; then mkdir $HOME/Vidéos/extraction ; fi

# test existence du fichier contenant les points de coupe
if [ ! -f $HOME/Vidéos/extraction/coupe_ffmpeg.txt ] ; then nano $HOME/Vidéos/extraction/coupe_ffmpeg.txt ; fi


Autant utiliser des variables pour stocker les noms de fichiers, vu que tu les utilises plus d'une fois wink

Doss_Extract="$HOME/Vidéos/extraction"
f_cut="$HOME/Vidéos/extraction/coupe_ffmpeg.txt"

#test existence du répertoire d'extraction
if [ ! -d "$Doss_Extract" ] ; then mkdir "$Doss_Extract" ; fi

# test existence du fichier contenant les points de coupe
if [ ! -f "$f_cut" ] ; then nano "$f_cut" ; fi
...
while read -r ss to
do
   k=$((++k))
   ffmpeg -i "$video" -ss "$ss" -to "$to" -c:v copy  -c:a copy  "$Doss_Extract"/sequence"$k"."$extension"
done < "$f_cut"
 

Dernière modification par Tawal (28-01-2022 12: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 !

Hors ligne

#6 28-01-2022 12:11:36

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : [résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

#test existence du répertoire d'extraction
if [ ! -d "$HOME/Vidéos/extraction" ] ; then mkdir $HOME/Vidéos/extraction ; fi



Se remplace avantageusement par

mkdir -p "$HOME/Vidéos/extraction"


antifa.png feminism.png lgbtqi.png disarm.png kopimi.png
Pas de repos pour les oppresseurs ! (surtout quand c'est moi)

Hors ligne

#7 28-01-2022 12:13:56

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

+1

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 !

Hors ligne

#8 28-01-2022 16:49:32

Croutons
Membre
Distrib. : Debian10 Buster
Noyau : Linux 4.19.0-18-amd64
(G)UI : Mate
Inscription : 16-12-2016

Re : [résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

hello
intéressant toute ses infos, bon j'ai continué mes tests
en fait la boucle test1 fonctionne
merci otyugh j'ai supprimé le maximum de guillemet ou je pouvais, cela a fonctionné que partiellement
un coup j'avais les sequence1 et 2 de créé
sur une autre video 1 et 3 , enfin c'était tout étrange
avec cette erreur sur ffmpeg

[NULL @ 0x555b551714c0] Unable to find a suitable output format for 'ss'
ss: Invalid argument


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

Invalid duration specification for ss: -ss


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

read --help


-a tableau  affecte les mots lus séquentiellement aux indices de la variable
        tableau ARRAY en commençant à 0


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

#!/bin/bash
#astuce utiliser la timeline de Avidemux pour repérer les points de coupe à l'image clé près 00:00:00.000

### variables
#numéro de séquence qui sera incrémentée
k=0

#test existence du répertoire d'extraction
if [ ! -d "$HOME/Vidéos/extraction" ] ; then mkdir $HOME/Vidéos/extraction ; fi

# test existence du fichier contenant les points de coupe
if [ ! -f $HOME/Vidéos/extraction/coupe_ffmpeg.txt ] ; then nano $HOME/Vidéos/extraction/coupe_ffmpeg.txt ; fi

# choisir la video source de l'extraction
video=$(zenity  --file-selection --title="Cliquer sur la vidéo à traiter puis valider " --multiple  --separator=" ")
var=$video
# pour avoir l'extension de la vidéo on enlève tout ce qui précède le dernier point  "."
extension=$(echo ${var##*.})

cd "$HOME"/Vidéos
#boucle de création des séquences, sauvegardées sous ~/Vidéos/extraction
while read line
do
  k=$((k+1))
  ffmpeg -nostdin -i $video $line -c:v copy  -c:a copy $HOME/Vidéos/extraction/sequence"$k"."$extension"
done <$HOME/Vidéos/extraction/coupe_ffmpeg.txt

ffmpeg -f concat -safe 0 -i <(for f in extraction/sequence*."$extension"; do echo "file '$PWD/$f'"; done) -c copy "$video"-concat."$extension"
echo $video-concat.$extension

 


ne pas oublier de créer le fichier coupe coupe_ffmpeg.txt
exemple:

-ss 00:00:03 -to 00:00:20.440
-ss 00:00:03 -to 00:00:20.440
-ss 00:00:01.80 -to 00:01:21.320


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 16: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

#9 28-01-2022 16:59:27

Croutons
Membre
Distrib. : Debian10 Buster
Noyau : Linux 4.19.0-18-amd64
(G)UI : Mate
Inscription : 16-12-2016

Re : [résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

ah super je viens de voir -p pour mkdir , surement quelque amélioration a faire je me doute
je ne suis qu'un débutant bidouilleur zen.gif

vous savez ce que on dit c'est comme pour les echecs
y'en a qui joue au echec
et ceux qui joue avec des echecs
je me situe dans la deuxiéme catégorie lol

-->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

#10 30-01-2022 00:02:27

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : [résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

En fait c'est le for que j'arrive pas à faire marcher (il fait une chaine de chaque ligne que j'arrive plus à utiliser ensuite :<), mais je m'en sors avec while yikes (testé avec dash ~)

#!/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 (30-01-2022 00:07:15)


antifa.png feminism.png lgbtqi.png disarm.png kopimi.png
Pas de repos pour les oppresseurs ! (surtout quand c'est moi)

Hors ligne

#11 30-01-2022 09:52:04

Croutons
Membre
Distrib. : Debian10 Buster
Noyau : Linux 4.19.0-18-amd64
(G)UI : Mate
Inscription : 16-12-2016

Re : [résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

mon script fonctionne bien mais je peux lire les fichiers créé que sur mon PC, beaucoup si sont cassé les dents avant moi big_smile
il fallait que je me rende compte par moi même, mais pour celui qui a un pc a coté de sa TV çà peut le faire
sa me saoul tellement les pubs je me demande si je vais pas capturer mon écran comme avant mad

Dernière modification par Croutons (30-01-2022 09: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

#12 30-01-2022 10:23:40

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : 5.18.9-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : [résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

Bonjour,

je regarde ce post avec attention et déjà je vois des trucs tordus à faire smile

Hors ligne

#13 30-01-2022 11:53:20

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : 5.18.9-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : [résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

une question :

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 ?

Hors ligne

#14 30-01-2022 11:58:15

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

Re,

@Croutons :
Tu dis que ma solution ne fonctionne pas. Il ne faut pas oublier que j'ai simplifié le fichier coupe_ffmpeg.txt :

00:04:30.560    00:30:08.440
00:36:25.040    01:20:50.560
01:27:01.800    01:51:21.320

par exemple.

Et tu ne tiens pas compte de mes remarques, du coup je les répète :

extension=$(echo ${var##*.})

Non !
Mais plutôt :

extension="${var##*.}"


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 wink

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 wink (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 wink

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) tongue

Edit2:
Illustration de l'avantage d'un tableau :

$ ls -l
total 0
$ mkdir D
$ touch t D/"t t"
$ a="-l -a t D/'t t'"
$
$ ls "$a"
ls : option invalide -- ' '
Saisissez « ls --help » pour plus d'informations.
$
$ ls $a
ls: impossible d'accéder à "D/'t": Aucun fichier ou dossier de ce type
ls: impossible d'accéder à "t'": Aucun fichier ou dossier de ce type
-rw-r--r-- 1 tawal tawal 0 30 janv. 11:32  t
$
$ a=( "-l" "-a" t "D/t t" )
$ ls "${a[@]}"
-rw-r--r-- 1 tawal tawal 0 30 janv. 11:32 'D/t t'
-rw-r--r-- 1 tawal tawal 0 30 janv. 11:32  t
$

Dernière modification par Tawal (30-01-2022 12: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 !

Hors ligne

#15 30-01-2022 12:29:33

Croutons
Membre
Distrib. : Debian10 Buster
Noyau : Linux 4.19.0-18-amd64
(G)UI : Mate
Inscription : 16-12-2016

Re : [résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

ah pour pour shellcheck il est installé, j'avais bien vu pour le usless echo mais pas modifié sur ce fichier hmm
concernant la boucle en plein milieu j'ai repris sur le script du forum Ubuntu qui lui même avait repris du wiki ffmpeg
https://trac.ffmpeg.org/wiki/Concatenate

sinon j'avais pensé a ouvrir Avidemux et le terminale pour repéré mes points de coupe
un truc du genre

# choisir la video source de l'extraction
video=$(zenity  --file-selection --title="Cliquer sur la vidéo à traiter puis valider " --multiple  --separator=" ")
var=$video

/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=avidemux3_qt5 --file-forwarding org.avidemux.Avidemux "$video" &
terminator --geometry=390x450+1369+455 --title 'définir les points de coupe' -x nano "$HOME"/Vidéos/extraction/coupe_ffmpeg.txt & sleep 1

#fenêtre toujours au top
wmctrl -r 'définir les points de coupe' -b add,above



pour l'instant je laisse en stanby ,mais tes remarques sont toujours les bienvenus smile
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 12: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

#16 30-01-2022 12:39:18

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

C'est ça qui me tracasse dans ton algorithme : il faut trouver ces points de coupe pour créer le fichier.
Et tu le fais avec Avidemux.
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).

Edit:
Regarde mon Edit2 de mon message précédent, c'est intéressant pour bien comprendre pourquoi je propose un tableau.

Dernière modification par Tawal (30-01-2022 12: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 !

Hors ligne

#17 30-01-2022 13:04:21

Croutons
Membre
Distrib. : Debian10 Buster
Noyau : Linux 4.19.0-18-amd64
(G)UI : Mate
Inscription : 16-12-2016

Re : [résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

Tawal a écrit :

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 lol
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 13: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

#18 30-01-2022 13:15:36

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : [résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

Pour faire un "bon" script, il faut le penser à l'avance comme je te l'ai décrit plus haut.
Ensuite, on peut aussi écrire en pseudo-code le déroulement du script et ainsi le séparer en parties.
Et garder à l'esprit : KISS = Keep It Simple Stupid

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 !

Hors ligne

#19 30-01-2022 13:57:00

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : [résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

Croutons a écrit :

mon script fonctionne bien mais je peux lire les fichiers créé que sur mon PC, beaucoup si sont cassé les dents avant moi big_smile


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)


antifa.png feminism.png lgbtqi.png disarm.png kopimi.png
Pas de repos pour les oppresseurs ! (surtout quand c'est moi)

Hors ligne

#20 30-01-2022 14:28:51

Croutons
Membre
Distrib. : Debian10 Buster
Noyau : Linux 4.19.0-18-amd64
(G)UI : Mate
Inscription : 16-12-2016

Re : [résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

oui je disais que beaucoup ont essayé de viré les marges et les pubs sur les enregistrements Freebox , c'est apparemment pas possible car avec les protections après la lecture saute comme sur un vieux vinyle  sad
vidéo.m2ts

Dernière modification par Croutons (30-01-2022 17: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

#21 30-01-2022 16:59:18

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : [résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

Ha oui, le format blueray. Ça marcherai probablement, mais en ré-encodant du coup. Faut une machine un peu plus musclée.

antifa.png feminism.png lgbtqi.png disarm.png kopimi.png
Pas de repos pour les oppresseurs ! (surtout quand c'est moi)

Hors ligne

#22 30-01-2022 20:47:29

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : 5.18.9-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : [résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

Bonsoir,

juste pour le plaisir :


#!/bin/bash



read -r -p "Entrez les coupes à faire dans le fichier log. [Y/n] " input
case $input in
    [yY][eE][sS]|[yY])

    nano -w time_cut.log < /dev/tty
CUT=$( cat time_cut.log)

 ;;
    [nN][oO]|[nN])
    echo -e "Il n'y aura pas de coupe."
exit 0
 ;;
esac



option=$(echo "$CUT"  | awk '{print $0 " -map 0 -codec copy video_"FNR".mkv"}')

ffmpeg -i "MA_VIDEO.mkv" $option

rm -f "time_cut.log"
 



C'est un début mais ça fonctionne smile

PS: Toutes les coupes sont sur la même commande

Dernière modification par golgot200 (31-01-2022 09:08:57)

Hors ligne

#23 31-01-2022 08:58:38

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : 5.18.9-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : [résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

Ce post vient de me faire découvrir videocut. Vraiment simple smile

https://github.com/kanehekili/VideoCut

Une question, c'est quelle image oû on peut faire sa coupe, la B, la P ou la I ?

Dernière modification par golgot200 (31-01-2022 09:11:46)

Hors ligne

#24 31-01-2022 12:15:52

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : 5.18.9-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : [résolu] boucle ffmpeg -supression guillemet et ffmpeg -nostdin

Ajout de concate dans mon bout de script smile

Hors ligne

Pied de page des forums