Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: videobestanden verkleinen in batch  (gelezen 4011 keer)

Offline h2o

  • Lid
videobestanden verkleinen in batch
« Gepost op: 2021/03/16, 10:00:23 »
Ik heb voor mijn werk regelmatig een opdracht waarbij ik foto's en filmpjes moet verkleinen. Daarna gaat dat allemaal in het archief.
Voor foto's gaat dat via dit script:
#!/bin/sh
find -name "*.jpg" -exec mogrify -resize 1600 -quality 75 {} \;
find -name "*.JPG" -exec mogrify -resize 1600 -quality 75 {} \;
echo klaar
exit

Hiermee worden alle .jpg en .JPG bestanden in één run verkleind, ook de onderliggende subdirectories.

Voor MPG bestanden heb ik iets dergelijks nodig.
Nu heb ik dit scriptje: ffmpeg -i input.mpg -acodec mp2 outputfile.mp4Dan moet ik eerst de bestanden qua naamzetting aanpassen en daarna één voor één verkleinen. Dat gaat overigens goed. Een filmpje van 4 GB gaat al gauw terug naar 900 MB en dan is het nog goed te bekijken.
Eigenlijk wil ik dus voor video bestanden een scriptje hebben al alle mpg en MPG bestanden (inclusief de onderliggende subdirectories) in één keer pakt. Liefst ook verbose zodat ik de voortgang in de gaten kan houden.

Wie kan mij helpen?
Werk laptops + werkstation: Debian Testing
Privé laptops: Debian Testing/Unstable
Test laptop: Diverse andere Linux distribities
Chromebooks: ChromeOS Flex

Offline kuifje09

  • Lid
Re: videobestanden verkleinen in batch
« Reactie #1 Gepost op: 2021/03/16, 13:05:54 »
This sort of scripts I am using regularly.


Watch carfully for the extentions, use always a dry-run first



#!/bin/bash

## Change mp4 to mpg or MPG or which you have....
## in all INPUT below.

ls -1 *mp4 | while read line
do
## cut extention to get filename- Whatch out for strange characters
echo ${line%%\.mp4}
In=${line%%\.mp4}
echo ${In}

## change output filename in a simple way. add -C as example.
## and the extention you want from ffmpeg

Out=${In}-C
echo ${Out}

## If names look OKAY... then, only then, start with conversion
## change conversion to which you want too have it.
## Look for the extentions....

##  ffmpeg -i "${In}.mp4" -target pal-svcd "${Out}.vob"
## to show what would run...
echo  ffmpeg -i "${In}.mp4" -target pal-svcd "${Out}.vob"

done


EDIT: Little touchup.
« Laatst bewerkt op: 2021/03/17, 11:43:45 door kuifje09 »

Offline vanadium

  • Lid
Re: videobestanden verkleinen in batch
« Reactie #2 Gepost op: 2021/03/19, 11:23:25 »
Een éénvoudige manier om een commando op meerdere bestanden te herhalen is:
for f in *.mp4 ;  do ffmpeg -i "$f" ... "$f".small.mp4 ;  done
Dit herhaalt het commando op alle aanwezige mp4 bestanden en schrijft het resultaat uit naar bestanden met dezelfde naam, maar .small.mp4 op het einde. Je kan ook vooraf een folder "small" maken en dan het resultaat daar terecht laten komen door "small/$f" aan te geven.

Offline h2o

  • Lid
Re: videobestanden verkleinen in batch
« Reactie #3 Gepost op: 2021/03/19, 11:32:24 »
Een éénvoudige manier om een commando op meerdere bestanden te herhalen is:
for f in *.mp4 ;  do ffmpeg -i "$f" ... "$f".small.mp4 ;  done
Dit herhaalt het commando op alle aanwezige mp4 bestanden en schrijft het resultaat uit naar bestanden met dezelfde naam, maar .small.mp4 op het einde. Je kan ook vooraf een folder "small" maken en dan het resultaat daar terecht laten komen door "small/$f" aan te geven.
Ziet er mooi uit en meteen uitgeprobeerd. Alleen krijg ik de melding:
Citaat
[NULL @ 0x55bab9d06040] Unable to find a suitable output format for '...'
...: Invalid argument

er zit toch nog ergens een foutje.
Werk laptops + werkstation: Debian Testing
Privé laptops: Debian Testing/Unstable
Test laptop: Diverse andere Linux distribities
Chromebooks: ChromeOS Flex

Offline vanadium

  • Lid
Re: videobestanden verkleinen in batch
« Reactie #4 Gepost op: 2021/03/19, 11:35:51 »
Tja, ik onderstelde wel dat je je eigen correcte ffmeg commando zou invullen. Die drie puntjes staan er dan ook maar als plaatsvuller voor de opties die je zal nodig hebben om te doen wat je wil  =D

Eérst een commando bouwen dat werkt op één bestand. Dan kan je het op die wijze laten uitvoeren over alle bestanden.

Offline jvecht

  • Lid
    • Just Vecht
Re: videobestanden verkleinen in batch
« Reactie #5 Gepost op: 2021/03/20, 09:47:30 »
Hallo h2O,

Ik een hele verzameling "for-loops" voor dit doel. Zie de bijlage.

Als het daarmee niet lukt, gebruik dan Handbrake van handbrake.fr Ik heb dat gisteren uitgeprobeerd op een Macbook. Beviel prima. Wel eerst een tutorial bekijken zoals https://youtu.be/RW0QNpAXEUE Engelstalig helaas.

Succes!

Just
GIMP bundel 2018  38 cursussen met mooi oefenmateriaal. Lekker lezen of er wat van opsteken!
  Boekje "Werken met Xubuntu" 5000+ downloads!
     Het Helpmij Magazine Mei 2021

Offline vanadium

  • Lid
Re: videobestanden verkleinen in batch
« Reactie #6 Gepost op: 2021/03/20, 11:13:54 »
Als ik je oorspronkelijke vraag eens opnieuw en nauwkeuriger bekijk, dan zoek je iets dat folders en subfolders doet. Dan is "find" ook hier een optie, op dezelfde manier als waar je het voor de foto's doet.een optie: "find" vindt bestanden en je kan er iets mee doen met de -exec optie.

Als we onderstellen dat je gewenste commando dat is wat je in je eerste post aangaf:
ffmpeg -i input.mpg -acodec mp2 outputfile.mp4
dan kan je dit als volgt automatiseren voor een folder, vb. ~/Films
find ~/Films -iname '*.mpg' -exec ffmpeg -i "{}" -acodec mp2 "{}".mp4 \;

"-iname" zorgt dat zowel '.mpg' als '.MPG' gevonden wordt. "{}" is de plaatshouder voor de bestandsnaam (het ganse pad) die gevonden werd.

Als de oorspronkelijke bestanden weg mogen, dan zoek je met "find" naar -iname '*.mpg' en wist die (of, veiliger,  tijdelijk verplaatsen). Daarna kan je zoeken naar de bestanden -iname '*.mpg,mp4' en die hernoemen naar *.mp4.

Offline h2o

  • Lid
Re: videobestanden verkleinen in batch
« Reactie #7 Gepost op: 2021/03/20, 19:28:30 »
find ~/Films -iname '*.mpg' -exec ffmpeg -i "{}" -acodec mp2 "{}".mp4 \;
Deze werkt en doet precies wat ik wil hebben. Ik heb mpg vervangen door mp4. De bestanden die gedaan zijn zijn voorzien van mp4.mp4 maar dat is precies de bedoeling, die herken ik dan meteen.
De bestanden zijn ineens een heel stuk kleiner geworden, nu kan ik een kopje koffie drinken en als ik weer boven ben is er al een en ander omgezet.
Bedankt maar weer!
Zo draai ik het nu: find -iname '*.mp4' -exec ffmpeg -i "{}" -acodec mp2 "{}".mp4 \;
« Laatst bewerkt op: 2021/03/20, 19:32:24 door h2o »
Werk laptops + werkstation: Debian Testing
Privé laptops: Debian Testing/Unstable
Test laptop: Diverse andere Linux distribities
Chromebooks: ChromeOS Flex