Script: video herschalen

Alles over programmeren in Linux
Gebruikersavatar
Mogenblue
Held
Held
Berichten: 351
Lid geworden op: Wo 18 Okt 2017, 08:27
Locatie: Amsterdam

Script: video herschalen

Berichtdoor Mogenblue » Wo 09 Dec 2020, 16:17

Met dit eenvoudige script kun je een video herschalen.

Je moet het eerst openen om de variabelen in te vullen. En dan opslaan.

In het script hieronder staat de hoogte op het formaat van een FHD scherm: 1080 pixels.
De breedte staat op -2. Dit is voor ffmpeg een signaal om de aspect ratio te behouden en automatisch de breedte net zoveel te schalen als de hoogte.
Als je op een bepaalde breedte wil schalen en de hoogte automatisch wil laten aanpassen moet je dus het omgekeerde doen: de gewenste breedte invullen en bij de hoogte -2 invullen.

Met het argument -profile:v high wordt de video in hoge kwaliteit geschaald. Dit resulteert in een langere verwerkingstijd en een groter uitvoerbestand. Als je deze optie wil gebruiken kun je de tweede conversie regel activeren door het # teken aan het begin van de regel weg te halen en voor de eerste conversie regel te plaatsen.

Om dit script te gebruiken kun je het opslaan op je schijf onder bijvoorbeeld video-resize.sh.
Dit bestand moet je dan nog uitvoerbaar maken.
Rechtsklik op het bestand voor het contextmenu.
Selecteer Eigenschappen.
Ga naar de tab Rechten.
Zet een vinkje bij Uitvoeren: Toestaan dat bestand wordt uitgevoerd als programma.

Code: Selecteer alles

#!/bin/bash

# selecteer video
VideoMap="/home/mogenblue/Videos/mijn verzameling/favoriete collectie"
ImportVideo="input.mp4"
ExportVideo="input-e.mp4"

# set nieuwe afmetingen
SetHoogte=1080
SetBreedte=-2

#-------------------------------------------------------------------------------------------------------------

echo .
echo .
echo .
echo "Bezig met herschalen ..."

cd "${VideoMap}"

# herschalen video
ffmpeg -loglevel error -i "${ImportVideo}" -filter:v scale=$SetBreedte:$SetHoogte "${ExportVideo}"
#ffmpeg -loglevel error -i "${ImportVideo}" -filter:v scale=$SetBreedte:$SetHoogte -profile:v high "${ExportVideo}"

echo klaar.

Het maakt niet uit in welke map je het script opslaat want je geeft in de eerste variable aan in welke map de video staat. Tijdens de uitvoering gaat het script dan naar die map toe met het cd commando. Maar je moet wel het volledige pad vanaf de root opgeven.

Om het script te starten klik je erop en kiest dan voor Uitvoeren in een terminalvenster.

Pas op dat je niet met al te grote video's begint want het kan vrij lang duren voor de bewerking gereed is. Dat is afhankelijk van de lengte van de video, de kracht van je cpu en ook enigszins van het beschikbare geheugen. Je kunt het best beginnen met een video van 10 seconden of 1 minuut.


Bronnen:
Convert a video to a fixed screen size by cropping and resizing
How to resize a video to make it smaller with FFmpeg
Bash variables and command substitution

Terug naar “Programmeren”

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers en 3 gasten