ubuntuusers.de

Viele Dateien aus einer Dashcam umbenennen, in Zeitrafferaufnahmen umwandeln und zusammenfügen

Status: Gelöst | Ubuntu-Version: Ubuntu 22.04 (Jammy Jellyfish)
Antworten |

vubu1

Anmeldungsdatum:
14. Juli 2010

Beiträge: 176

Hallo, meine Dashcam produziert -zig MP4-Dateien á 5 Minuten, die jeweils auf diese Weise abgespeichert werden:

  • 2024-01-26-23-53-02.MP4

  • 2024-01-26-23-58-02.MP4

  • 2024-01-27-00-03-02.MP4

  • ...

Zwecks Vereinfachung möchte ich Diese Dateien einfach durchnumeriert haben:

  • 1.MP4

  • 2.MP4

  • 3.MP4

  • ...

Trotz der zahlreichen Beispiele für das Umbenennen, habe ich es bisher durch einen Einzeiler nicht hinbekommen, auch nicht mit "rename". Hier brauche ich Hilfe.

***

Meine getestete Lösung für das Umwandeln der Dateien in eine Zeitrafferaufnahme (Faktor 30):

ffmpeg -i 1.MP4 -vf "setpts=PTS/30" -an 30_1.MP4

***

Für das Zusammenführen zu einer einzigen Zeitraffenaufnahme bin ich bisher auf diese Lösung gekommen:

ffmpeg -f concat -safe 0 -i ./input.txt -c:v copy output.mp4

Wobei eine Liste der entsprechenden Dateien sich in input.txt befindet. (getestet)

***

Perspektivisch wäre es natürlich gut, das alles in einem Schritt mit einem Bash-Skript zu erledigen.

Wäre für entsprechende Hilfe sehr dankbar!

Viele Grüße vubu1

micneu

Avatar von micneu

Anmeldungsdatum:
19. Januar 2021

Beiträge: 800

Wohnort: Hamburg

Dann poste doch schonmal was dein einzelner oder dein Script bisher macht. Dann kann man darauf aufbauen oder willst du das wir für dich das Script schreiben? 😜 Bitte noch die Fragen beantworten:

Zwecks Vereinfachung möchte ich Diese Dateien einfach durchnumeriert haben:

Um es für dich zu vereinfachen? Ich sehe es so für ein Skript ist es egal ob die Datei mit dem Original Namen arbeitet oder einen kürzeren Namen hat (ich persönlich würde da NICHTS umbenennen) und einfach die Dateien Verarbeiten

  • ist die maximale Anzahl an Film Segmenten bekannt?

  • wie ist die Benamung geplant (in deinem Text hast du was mit Datum?

  • sind alle zusammen gehörigen Film Elemente in einem Verzeichnis oder können auch Unterschiedliche Filme in einem Verzeichnis sein?

Bitte so viel Informationen wie möglich

vubu1

(Themenstarter)

Anmeldungsdatum:
14. Juli 2010

Beiträge: 176

Von den drei beschriebenen Stufen funktionieren die beiden letzten. Ich gab ja an, dass ich sie getestet habe. Wie beschrieben, komme ich leider bei der ersten Stufe, dem Umbenennen der vielen Dateien, noch zu keiner Lösung.

Wenn dieses Problem gelöst ist, kann ich immerhin stufenweise damit arbeiten. Danach geht es um die Erstellung eines Bash-Skripts, das alles in einem Rutsch erledigt.

Ggf. bitte ich um Verschiebung meiner Frage, bzgl. des ersten Problems, aber ich wollte schon zeigen, was das Ziel ist und die Ausgestaltung des Skripts dürfte von der Art der Lösungen der einzelnen Stufen abhängen.

vubu1

(Themenstarter)

Anmeldungsdatum:
14. Juli 2010

Beiträge: 176

Beantwortung Deiner Fragen, die erst später hinzugefügt wurden:

F: ist die maximale Anzahl an Film Segmenten bekannt?

A: Die Anzahl der Filmsemente variiert, denn sie ist davon abhänging, wie lange die Dashcam läuft.

F: wie ist die Benamung geplant (in deinem Text hast du was mit Datum?

A: Derzeit steht in input.txt folgendes:

file '30_1.MP4'
file '30_2.MP4'
file '30_3.MP4'
file '30_4.MP4'
file '30_5.MP4'
file '30_6.MP4'
file '30_7.MP4'
file '30_8.MP4'
file '30_9.MP4'
file '30_10.MP4'
file '30_11.MP4'
file '30_12.MP4'
file '30_13.MP4'
file '30_14.MP4'
file '30_15.MP4'
file '30_16.MP4'
file '30_17.MP4'
file '30_18.MP4'
file '30_19.MP4'
file '30_20.MP4'
file '30_21.MP4'
file '30_22.MP4'
file '30_23.MP4'
file '30_24.MP4'
file '30_25.MP4'
file '30_26.MP4'
file '30_27.MP4'
file '30_28.MP4'
file '30_29.MP4'
file '30_30.MP4'
file '30_31.MP4'
file '30_32.MP4'
file '30_33.MP4'
file '30_34.MP4'
file '30_35.MP4'
file '30_36.MP4'
file '30_37.MP4'
file '30_38.MP4'
file '30_39.MP4'
file '30_40.MP4'
file '30_41.MP4'
file '30_42.MP4'
file '30_43.MP4'
file '30_44.MP4'
file '30_45.MP4'
file '30_46.MP4'
file '30_47.MP4'
file '30_48.MP4'
file '30_49.MP4'
file '30_50.MP4'
file '30_51.MP4'
file '30_52.MP4'
file '30_53.MP4'
file '30_54.MP4'

Das könnte natürlich geändert werden. (Die "30" steht für einen Zeitraffer-Faktor von 30. Die fortlaufenden Nummern stehen für eine Vereinfachung der zeitlich nacheinander von der Dashcam erstellten Dateien (Beispiel des ursprüngliches Formats: 2024-01-26-23-53-02.MP4)

F: sind alle zusammen gehörigen Film Elemente in einem Verzeichnis oder können auch Unterschiedliche Filme in einem Verzeichnis sein?

A: Alle Filmelemente befindet sich im gleichen Unterverzeichnis.

micneu

Avatar von micneu

Anmeldungsdatum:
19. Januar 2021

Beiträge: 800

Wohnort: Hamburg

Danke für die Antworten. Wie stellst du sicher das nur Zusammen gehörige Film Elemente umbenannt werden? hier mein Ansatz wie man entsprechend die Dateien finden kann und schon mal die Nummerierung.

zahl=1; for i in $(find . -type f -iname "*.mp4"); do echo $i $zahl; ((zahl++)); done

vubu1

(Themenstarter)

Anmeldungsdatum:
14. Juli 2010

Beiträge: 176

Danke für Deine Fragen und Lösungsansätze.

F: Wie stellst du sicher das nur Zusammen gehörige Film Elemente umbenannt werden?

A: Bisher habe ich das von Hand gemacht. Sollte natürlich auch irgendwie automatisiert werden.

micneu

Avatar von micneu

Anmeldungsdatum:
19. Januar 2021

Beiträge: 800

Wohnort: Hamburg

Also ohne umbenennen könnte man die Datei „input.txt“ so erstellen:

zahl=1; for i in $(find . -type f -iname "*.mp4"); do echo file \'$i\' >> input.txt; ((zahl++)); done

Meine empfehlung wenn du nicht so gut in Scripten bist:

Sorry wenn ich nochmal nachfrage, wenn es automatisiert verarbeitet wird, brauchen doch die Dateien nicht umbenannt werden, ich persönlich würde den schritt weglassen.

vubu1

(Themenstarter)

Anmeldungsdatum:
14. Juli 2010

Beiträge: 176

Klar, wenn es automatisiert verarbeitet wird, brauchen die Dateien nicht umbenannt werden.

micneu

Avatar von micneu

Anmeldungsdatum:
19. Januar 2021

Beiträge: 800

Wohnort: Hamburg

Wie schon geschrieben, dann hast du ja schonmal einen Einzeiler mit dem du deine "input.txt" bekommst, bin schon gespannt auf deine Skript Lösung

for i in $(find . -type f -iname "*.mp4"); do echo file \'$i\' >> input.txt; done

vubu1

(Themenstarter)

Anmeldungsdatum:
14. Juli 2010

Beiträge: 176

Danke für den Einzeiler! Er wurde von mir getestet und er funktioniert.

Ich rekapituliere den jetzigen Stand:

1. Erzeugen einer Datei input.txt, in der sich die zu verarbeitenden MP4-Dateien befinden:

for i in $(find . -type f -iname "*.MP4"); do echo file \'$i\' >> input.txt; done

2. Erzeugung von Zeitrafferdateien (Zeitraffer-Faktor 30), Einzelbeispiel:

ffmpeg -i 2024-01-26-23-58-02.MP4 -vf "setpts=PTS/30" -an 30_2024-01-26-23-58-02.mp4

3. Zusammenführen zu einer einzigen Zeitrafferaufnahme:

ffmpeg -f concat -safe 0  -i ./input.txt -c:v copy output.mp4

Ich nehme also den Punkt 2. in Angriff. Hier soll eine Datei nach der anderen in eine Zeitraffer-Datei umgewandelt werden. Bei einer einzelnen Datei klappt es. Mit der Syntax der Einzeiler bin ich kaum vertraut und probierte folgendes:

for f in *.mp4; do ffmpeg -i “$f” vf "setpts=PTS/30" -an 30_*.MP4; done

Wie zu erwarten, gab es Fehlermeldungen:

$ for f in *.mp4; do ffmpeg -i “$f” vf "setpts=PTS/30" -an 30_*.MP4; done
ffmpeg version 4.3.6-0+deb11u1 Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 10 (Debian 10.2.1-6)
  configuration: --prefix=/usr --extra-version=0+deb11u1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
“2024-01-26-23-53-02.mp4”: No such file or directory
ffmpeg version 4.3.6-0+deb11u1 Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 10 (Debian 10.2.1-6)
  configuration: --prefix=/usr --extra-version=0+deb11u1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
“2024-01-26-23-58-02.mp4”: No such file or directory
ffmpeg version 4.3.6-0+deb11u1 Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 10 (Debian 10.2.1-6)
  configuration: --prefix=/usr --extra-version=0+deb11u1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
“2024-01-27-00-03-02.mp4”: No such file or directory
ffmpeg version 4.3.6-0+deb11u1 Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 10 (Debian 10.2.1-6)
  configuration: --prefix=/usr --extra-version=0+deb11u1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
“2024-01-27-00-08-03.mp4”: No such file or directory
ffmpeg version 4.3.6-0+deb11u1 Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 10 (Debian 10.2.1-6)
  configuration: --prefix=/usr --extra-version=0+deb11u1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
“2024-01-27-00-13-03.mp4”: No such file or directory

Die Fehlermeldungen verstehe ich nicht, denn im Verzeichnis "test" befinden sich folgende Dateien (kleine Videoschnipsel):

$ ls
2024-01-26-23-53-02.mp4  2024-01-27-00-03-02.mp4  2024-01-27-00-13-03.mp4
2024-01-26-23-58-02.mp4  2024-01-27-00-08-03.mp4  input.txt

Vielleicht kann mir jemand weiterhelfen?

micneu

Avatar von micneu

Anmeldungsdatum:
19. Januar 2021

Beiträge: 800

Wohnort: Hamburg

Willst du jetzt von jeder kleinen datei eine Zeitraffer machen oder von der zusammen gesetzten? Dein Text habe ich jetzt nicht ganz verstanden

vubu1

(Themenstarter)

Anmeldungsdatum:
14. Juli 2010

Beiträge: 176

Richtig, ich möchte von jeder kleinen Datei einen Zeitraffer machen, denn die vorher zusammengesetzte Datei wäre viel zu groß. Sprich: Erst nach Zeitraffung die Schnipsel zu einer Datei zusammensetzen.

vubu1

(Themenstarter)

Anmeldungsdatum:
14. Juli 2010

Beiträge: 176

Habe einen anderen Versuch gestartet und bin von einem hier beschriebenen Skript ausgegangen: https://www.streamingmedia.com/Articles/ReadArticle.aspx?ArticleID=129295

Daraus machte ich folgenden Einzeiler:

for file in *.mp4; do ffmpeg -i "$file" -vf "setpts=PTS/30" -an "${files%.*}_30".MP4; done

Die Idee war, die "_30" (Zeitrafferfaktor) an den Dateinaman hinten dranzuhängen. Der funktionierte so nicht, denn in der Syntax kenne ich mich nicht aus.

Immerhin wurde die erste Datei richtig konvertiert, allerdings in "_30.MP4". Das führte im nächsten Durchgang natürlich zur Frage:

File '_30.MP4' already exists. Overwrite? [y/N] 

Immerhin keine Fehlermeldung...

CarstenHa

Avatar von CarstenHa

Anmeldungsdatum:
1. Mai 2020

Beiträge: 142

vubu1 schrieb:

Daraus machte ich folgenden Einzeiler:

for file in *.mp4; do ffmpeg -i "$file" -vf "setpts=PTS/30" -an "${files%.*}_30".MP4; done

Da scheint sich ein s eingeschlichen zu haben:

1
${files%.*}

Du meintest bestimmt:

1
${file%.*}

Gruß

Carsten

vubu1

(Themenstarter)

Anmeldungsdatum:
14. Juli 2010

Beiträge: 176

Vielen lieben Dank! Jetzt funktioniert der Einzeiler und ich kann erst einmal in Ruhe schlafen.

Antworten |