Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Sequenza Video Bash + FFMPEG

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[1] Sequenza Video Bash + FFMPEG

Messaggioda Foto UtenteThEnGi » 1 feb 2023, 19:56

Ciao a tutti,
Avrei bisongo di una mano con un semplice script Bash. (Debian 11)
Ho una cartella contenente serie di x cartelle, contenenti a loro volta dei file .mp4 denominati x-AAAAMMDD-HHMMSS.mp4 (AAAA=Anno ecc...)
Ogni cartella può conenere un numero arbitrario di file, ma con la stessa struttura di nome.
A questo punto vorrei concatenare tutti i file e lasciare un solo file per cartella.
Va utilizato FFMPEG, con il relativo comando concat . (ha bisogno solo di un txt con "file ./x-AAAAMMDD..... )
In pratica: Entra cartella 1 - Concatena - Cancella - Esce - Entra cartella2 - Concatena - Cancella - Esce - ecc
Non riesco a capire come implementare l'entra-esce senza sapere il nome della cartella

Per il momento entro in ogni carltella e lancio il seguente comando per poi cancellare a mano
Codice: Seleziona tutto
echo "$(find . -type f -newermt "2022-01-25" ! -newermt '2023-01-31' -name "*.mp4" -printf '%Ts\t%p\n' | sort -n | cut -f2)" >> file.txt; sed -i -e 's/^/file /' test.txt;ffmpeg -f concat -safe 0 -i test.txt -c copy concatenato25-01-23.mp4;rm file.txt


O_/
Avatar utente
Foto UtenteThEnGi
2.230 3 6 9
Expert EY
Expert EY
 
Messaggi: 2228
Iscritto il: 6 ott 2022, 18:43

0
voti

[2] Re: Sequenza Video Bash + FFMPEG

Messaggioda Foto UtenteGioArca67 » 1 feb 2023, 23:33

Se sono sotto la stessa radice non puoi lì usare ls tipo ad es
Codice: Seleziona tutto
for i in $(ls -d */); do echo ${i%%/}; done


o anche il semplice echo
Codice: Seleziona tutto
echo */

o per le sottocartelle
Codice: Seleziona tutto
echo */*/

magari spediti in un file di testo....
Avatar utente
Foto UtenteGioArca67
4.585 4 6 9
Master EY
Master EY
 
Messaggi: 4595
Iscritto il: 12 mar 2021, 9:36

0
voti

[3] Re: Sequenza Video Bash + FFMPEG

Messaggioda Foto UtenteThEnGi » 2 feb 2023, 10:32

GioArca67 ha scritto:1.
Codice: Seleziona tutto
for i in $(ls -d */); do echo ${i%%/}; done

2.
Codice: Seleziona tutto
echo */

3.
Codice: Seleziona tutto
echo */*/


Si le cartelle sono tutte sotto la stessa radice

Sono in ufficio, stasera provo
1. da provare
2. Cosi non mi da solo i nomi delle cartelle ?
3. Cosi mi da tutti i file, ma a me serve cartella per cartella e il file compattato va nella cartella di appartenenza

Grazie
O_/
Avatar utente
Foto UtenteThEnGi
2.230 3 6 9
Expert EY
Expert EY
 
Messaggi: 2228
Iscritto il: 6 ott 2022, 18:43

0
voti

[4] Re: Sequenza Video Bash + FFMPEG

Messaggioda Foto UtenteGioArca67 » 2 feb 2023, 11:38

ThEnGi ha scritto:[
3. Cosi mi da tutti i file, ma a me serve cartella per cartella e il file compattato va nella cartella di appartenenza

No, ti da tutte le sotto sotto cartelle
Avatar utente
Foto UtenteGioArca67
4.585 4 6 9
Master EY
Master EY
 
Messaggi: 4595
Iscritto il: 12 mar 2021, 9:36

0
voti

[5] Re: Sequenza Video Bash + FFMPEG

Messaggioda Foto UtenteThEnGi » 2 feb 2023, 18:29

@Foto UtenteGioArca67 Forse non ci siamo capiti, no... Mi sono spiegato male :oops:
Ti allego un obrobrio di come sono strutturate le cartelle. (ho scrito file1.mp4 un po' d'appertutto ma sono file diversi)
I file presenti nella Cartella1 devono essere convertiti in un unico file tramite FFMPEG Concat e poi eliminati.
Stessa procedura per tutte le altre cartelle. Alla fine dei giochi mi trovo 1 file .mp4 per (sotto)cartella.
FFMPEG per concatenare vuole un file .txt contenete tutti i percorsi (in realtà vuole una struttura ma con echo è facile). I percorsi possono essere relavitivi ma il comando va eseguito "dentro" la cartella

Prendendo spunto dal tuo for:
Codice: Seleziona tutto
for f in *.mp4; do echo "$f" >> Lista.txt; done


però:
1. Concatenerebbe anche il concatenato precedente (abbastanza facile:faccio pulizia con rm prima del for)
2. è applicabile sono una volta che con cd sono dentro la cartella... bisogna riproporlo per lavorare in assoluto


O_/
Allegati
Cartelle.JPG
Avatar utente
Foto UtenteThEnGi
2.230 3 6 9
Expert EY
Expert EY
 
Messaggi: 2228
Iscritto il: 6 ott 2022, 18:43

1
voti

[6] Re: Sequenza Video Bash + FFMPEG

Messaggioda Foto UtenteGioArca67 » 2 feb 2023, 22:31

Nel loop puoi mettere più comandi

Codice: Seleziona tutto
for i in $(ls -d */)
   cd ${i%%/}
   for f in *.mp4; do echo "$f" >> Lista.txt; done
   ffmpeg .....
   cd ..
done
Avatar utente
Foto UtenteGioArca67
4.585 4 6 9
Master EY
Master EY
 
Messaggi: 4595
Iscritto il: 12 mar 2021, 9:36

0
voti

[7] Re: Sequenza Video Bash + FFMPEG

Messaggioda Foto UtenteThEnGi » 2 feb 2023, 22:53

For annidato, proprio non ci ho pensato.
Domani metto giù due righe e lo provo !

Grazie !
Avatar utente
Foto UtenteThEnGi
2.230 3 6 9
Expert EY
Expert EY
 
Messaggi: 2228
Iscritto il: 6 ott 2022, 18:43


Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 14 ospiti