Wer beruflich den WhatsApp Status nutzt, um mit Videos potentielle Kunden zu erreichen, kennt das Problem: WhatsApp erlaubt im Status nur Videos mit einer Länge von bis zu 30 Sekunden, die maximal 16 MB groß sein dürfen.

Sofern jedes Video diese Voraussetzungen erfüllt, können aber mehrere Videos in der WhatsApp Story aneinander gereiht werden.

Auch ich stand vor der Frage, wie ich längere Videos automatisiert in 30-Sekunden-Blöcke splitten kann. Denn manuell mehrere Videos einzeln zu splitten, kann je Anzahl durchaus langwierig und mühselig werden. Deshalb habe ich nach einer automatisierten Lösung gesucht, die ich hier teilen möchte.

Mit ffmpeg automatisiert Videos für WhatsApp Status Updates in 30-Sekunden Clips trennen

Meine Lösung ist ein bat-Script mit Hilfe von ffmpeg. Das Script übernimmt die Arbeit, die überlangen Videos in 30-Sekunden Clips zu trennen und komprimiert gleichzeitig die Datei, um möglichst unter dem 16 MB Limit zu bleiben.

Für die Erstellung deines Video-Scripts nutzt du am besten einen Code-Editor, wie den freien Notepad++. Den bekommst du hier.

Das bat-Script sieht wie folgt aus. Kopiere den Code und speichere die Datei als bat, bspw. whatsapp.bat.

for %%x in (%*) do call :process %%x exit /B 0 :process ffmpeg.exe -n -i %1 -segment_time 29 -f segment -vcodec libx265 -preset slow -crf 30 -vf scale=1280:-1 -acodec copy -reset_timestamps 1 -sc_threshold 0 -force_key_frames "expr:gte(t,n_forced*1)" whatsapp/%~n1_wp_%%02d.mp4
Code-Sprache: PHP (php)

Für das Script brauchst du die ffmpeg.exe

Die kompilierte, ausführbare exe Version von ffmpeg bekommst du kostenfrei hier. Lade Dir dort die aktuellste Version herunter und entpacke das zip Archiv.

Das entpackte Verzeichnis verschiebst du dir am besten an einen Ort, wo die Daten permanent liegen können. Im Ordner „bin“ liegt die ffmpeg.exe ab.

Damit die bat Datei weiß, wo die ffmpeg.exe liegt, musst du den Pfad zur exe kopieren. Dafür klickst bei gedrückter Shift-Taste mit Rechtsklick auf die exe. Im Kontextmenü wählst du den Punkt „als Pfad kopieren“.

In meinem obigen Script ersetzt du dann ffmpeg.exe gegen deinen Pfad. Dann sieht das Script (je nach Pfad) so aus:

for %%x in (%*) do call :process %%x exit /B 0 :process "C:\Users\Desktop\Downloads\ffmpeg\bin\ffmpeg.exe" -n -i %1 -segment_time 30 -f segment -vcodec libx265 -preset slow -crf 30 -vf scale=1280:-1 -acodec copy -reset_timestamps 1 -sc_threshold 0 -force_key_frames "expr:gte(t,n_forced*1)" whatsapp/%~n1_wp_%%02d.mp4
Code-Sprache: PHP (php)

WhatsApp Videos in der Story: Die Script-Befehle einzeln erklärt

Das Script beginnt mit einer einfachen for-Schleife. Der Clou: Du kannst auf die bat-Datei einfach mehrere Videos per Drag’n’Drop ziehen, und das Script arbeitet diese Videos dann nacheinander ab. Du schiebst also zehn „überlange“ Videos auf die bat-Datei und erhältst am Ende für jedes Videos entsprechend der Länge gesplittete Einzelvideos.

for %%x in (%*) do call :process %%x exit /B 0
Code-Sprache: PHP (php)

Ab :process beginnt das eigentliche Script. Nachfolgend erkläre ich nur relevante Befehle, die du anpassen könntest.

"C:\Users\Desktop\Downloads\ffmpeg\bin\ffmpeg.exe" -n -i %1 -segment_time 30 -f segment -vcodec libx265 -preset slow -crf 30 -vf scale=1280:-1 -acodec copy -reset_timestamps 1 -sc_threshold 0 -force_key_frames "expr:gte(t,n_forced*1)" whatsapp/%~n1_wp_%%02d.mp4
Code-Sprache: JavaScript (javascript)

-n verhindert, dass bereits erstellte Dateien überschrieben werden

-segment_time erzeugt das Splitten der Videos, also quasi nach wie vielen Sekunden, das Video getrennt werden soll.

-vcodec definiert den Output Codec des Videos. Hier libx265

-preset ist eine Sammlung von Optionen, die ein bestimmtes Verhältnis von Codiergeschwindigkeit zu Komprimierung bietet. Einfach ausgedrückt: Eine langsameres Presets bietet eine bessere Komprimierung. Die Codiergeschwindigkeiten unterscheiden sich aber extrem. Daher solltest du die möglichen Presets einfach mal selbst ausprobieren. Mehr Informationen zu den möglichen Presets findest du hier.

-crf entscheidet quasi über die Qualität des Output-Videos. Je niedriger, desto höher die Qualität. Ein Wert von 22 erzeugt ein Video mit guter Qualität. Auch hier musst du einfach mal ausprobieren, mit welcher Qualität du zufrieden bist. Ich habe mich für 30 entscheiden – also eine geringere Qualität als „Standard“ mit 22.

-vf scale=1280:-1 Hier habe ich mich dazu entschieden jedes Video auf 1280px Breite zuzuschneiden.

Die folgenden Befehle sind wichtig, um auch wirklich exakt 30 sekündige Videos erhalten.

whatsapp/%~n1_wp_%%02d.mp4 erklärt wo die Output-Dateien hinsollen (in den Ordner „whatsapp“) und die Dateibennnung mit aufsteigend Zahlen.

Mit ffmpeg Videos für verschiedene Social Media Formate automatisiert erzeugen

Das Script oben kannst du natürlich jederzeit auch um weitere Befehle erweitern. So kannst du beispielsweise für aus einem Video mehrere unterschiedliche Versionen machen.

Das kann nützlich sein, um bspw. ein Video für WhatsApp Stories, eine Version für den Versand via E-Mail und eine Version für Instagram zu optimieren.

Im nachfolgenden Beispiel erzeuge ich beispielsweise für Whatsapp und Instagram Output-Videos im quadratischen Format. Das mache ich über den Befehl -vf „crop=1080:1080:420:0“

for %%x in (%*) do call :process %%x rem Dieses Script erzeugt verschiedene Videodateien fürr Social Media und mehr. exit /B 0 :process rem Video for Whatsapp ffmpeg.exe -n -i %1 -segment_time 30 -f segment -vcodec h264 -preset slow -crf 30 -vf scale=1280:-1 -acodec copy -reset_timestamps 1 -vf "crop=1080:1080:420:0" -sc_threshold 0 -force_key_frames "expr:gte(t,n_forced*1)" whatsapp/%~n1_wp_%%02d.mp4 rem LOW-RES Videos: Fürr E-Mail Versand ffmpeg.exe -n -i %1 -vcodec h264 -preset slow -crf 32 -vf scale=1280:-1 -acodec copy low/%~n1_lr.mp4 rem MEDIUM-RES Videos: Fürr Website und PowerPoint ffmpeg.exe -n -i %1 -vcodec h264 -preset slower -crf 28 -vf scale=1920:-1 -acodec copy medium/%~n1_mr.mp4 rem fürr die Website ffmpeg.exe -n -i %1 -vcodec h264 -preset slower -crf 28 -vf scale=1920:-1 -acodec copy -movflags +faststart website/%~n1_web.mp4 rem HIGH-RES Videos ffmpeg.exe -n -i %1 -vcodec h264 -preset slow -crf 17 -acodec copy high/%~n1_hr.mp4 rem Instagram Video 1:1 ffmpeg.exe -n -i %1 -vf "crop=1080:1080:420:0" -vcodec h264 -preset slower -crf 22 -acodec copy square_for_instagram/%~n1_square.mp4
Code-Sprache: PHP (php)

Ich hoffe, ich konnte Dir mit diesem Script ein wenig Arbeit ersparen. Wenn ja, oder du Fragen hast, dann lass es mich in den Kommentaren wissen.

Marko
Autor

Hallo, ich bin Marko. Beruflich im Marketing-Bereich tätig, privat mit großem Interesse an Technik, Web und Multimedia. Ich tüftle, bis ich eine Lösung gefunden habe. Seit 2013 teile ich diese Lösungen auf techify. Baujahr 1986, ursprünglich aus der Rheinnebene, heute zuhause im Raum Stuttgart. Du findest mich auch auf Twitter.

2 Kommentare

Hinterlasse einen Kommentar