[Quicktip] Wie man auf dem iPhone Zeitrafferaufnahmen einer GoPro Kamera in ein Video umwandelt

GoPro Kameras verfügen neben dem Video- und dem Foto-Modus auch über eine Zeitraffer Funktion. In dieser werden in festgelegten Abständen Fotos geschossen, welche dann später mittels der GoPro Software am Rechner zu einem Video zusammengefügt werden können.

Nun sind wir bereits im Jahr 2021 und ich möchte mittlerweile eigentlich alles was Videoschnitt angeht auch einfach unterwegs auf dem iPhone oder iPad machen können. nur leider ist das gar nicht so einfach. Man bekommt die Zeitraffer Aufnahmen zwar mit der GoPro App von der Kamera heruntergeladen und die App erkennt das ganze auch als zusammenhängendes Werk – ein einfaches Video kann man mit ihr aber trotzdem nicht erzeugen. Nachdem ich dann den größten Teil der Apps durchforstet habe stieß ich leider immer wieder auf das Problem, dass die vielen Zeitraffer Apps nur die direkte Aufnahme von Zeitraffer Videos ermöglichen, nicht aber das zusammensetzen von einzelnen Bildern die man bereits in der Foto App hat. Mit Ausnahme eines 30€ Schnittprogramms, welches die Funktion wohl unterstützt. Das war mir für diesen einen Einsatzzweck dann doch zu teuer.

Nach etwas hin und her habe ich mir dann die Shortcuts/Kurzbefehle App angesehen und über einen Trick kann man die gewünschten Videos so direkt am Handy erzeugen: man erstellt eine neue “Sharing App”, die Bilder als Input nimmt und erstellt dann aus den Bildern ein Gif – und aus dem Gif dann ein Video 🙄 😂

In der Shortcuts/Kurzbefehle App sieht das dann so aus:

Um aus der App eine Sharing App zu machen müsst ihr oben rechts auf die drei Punkte tippen und dann “Im Share-Sheet anzeigen” aktivieren. Sinnvollerweise sollte bei “Share-Sheet-Typen” Bilder ausgewählt sein.

Bei den Einstellungen für das Gif müsst ihr mit dem Wert bei “Sekunden pro Foto” ein bisschen spielen. Soweit ich das sehe kann der Wert nur 2 Stellen hinter dem Komma. 30 Bilder/s wären 0,03333333333… daher habe ich hier erstmal 0,04 genommen. 0,03 war mir dann etwas zu schnell, kommt aber eben auf das Video an.

 

Speichert das ganze ab, und dann könnt ihr in der Fotos App die entsprechenden Fotos markieren, teilen und wählt dann eure eben erstellte Shortcuts-App auf. Nachdem der Fortschrittsbalken durch ist solltet ihr das fertig gerenderte Video in euer Foto-App sehen. Irritierenderweise ist der Sharing-Bildschirm weiter offen…

Das schöne Dresden – eine mittles K.I. aufbereitete Doku über Dresden aus dem Jahre 1936

Es handelt sich um eine private Dokumentation der Stadt Dresden aus dem Jahre 1936, welche per künstlicher Intelligenz deutlich aufgewertet wurde – aus schwarz-weiss wurde Farbe, aus den verwackelten und damals üblichen ruckeligen Aufnahmen werden ruhige Kamerabilder mit flüssigen Bewegungen. Wenn man sich das Original anschaut, dann ist es wirklich krass was man dort mittels Computer und moderner Technik rausholen konnte.

PS: Der Film selbst startet ab Minute 1.

Das Video wurde leider mittlerweile gesperrt, man findet hier aber eine ähnliche Variante:

Gedreht wurde das Video damals von Dr. Gerhard Schneider. Das Original ist hier zu finden:
http://mediathek.slub-dresden.de/vid90000810.html

[Quicktip] Wie man Daten von Freenas auf einen USB Datenträger kopiert

Um Daten von eurem FreeNAS Server auf einen FAT32 formatierten USB Stick/USB Festplatte zu bekommen sind folgende Schritte notwendig:

  • Per SSH auf die Console des Servers verbinden
  • Verzeichnis für den Stick erstellen:
    mkdir /mnt/USB-Stick
  • Finde mittels
    gpart list
    heraus, wie die Bezeichnung des USB Sticks ist (z.B. “da1p1”)
  • Nun mountest du den Stick in das entsprechende Verzeichnis, welches du unter Punkt zwei angelegt hast
    mount -v -t msdosfs /dev/da1p1 /mnt/USB-Stick
  • mittels der Kommandos “cp” und “mv” kannst du nun auf der Console die gewünschten Dateien kopieren
  • wenn du fertig bist, kannst du per
    umount /mnt/USB-Stick
    den Stick wieder auswerfen und dann anschließend vom Server abziehen.

Wie man den Zusammenbruch einer Zivilisation verhindert

In diesem extrem guten Vortrag geht Jonathan Blow auf die Problematik des Wissensverlustes von Zivilisationen ein. Er erklärt Anfangs das Grundproblem, warum viele alte Zivilisationen, die einst sehr mächtig und effizient waren, irgendwann einfach verschwunden sind – wie die Römer oder die Maya. In allen genannen Beispielen war es auf der einen Seite kein Untergang innerhalb eines Tages, sondern über viele Jahre, Jahrzehnte oder gar Jahrhunderte und sie hatten auf der anderen Seite vor allem eines gemeinsam: immer spielte der Verlust von Wissen die entscheidende Rolle.

Und mit diesen erkannten Prinzipien schwenkt er dann in die Neuzeit und münzt das Ganze auf die Problemantik, dass die moderne Welt nahezu komplett auf Hardware/Software basiert – was an sich ja erstmal nicht verkehrt ist. Allerdings befinden wir uns aktuell in einer Phase, in der nahezu viele Techniker zwar auf ihrem hohen Level sehr gut sind, aber die wenigsten noch die Grundlagen beherschen: wie funktioniert eine CPU bzw. wie baut man eine CPU, wie funktioniert ein Compiler im Detail, wie werden Daten im Speicher abgelegt und verwaltet und was exakt macht eine Garbage Collection? Das sind nur einzelne Bereiche, aber sie zeigen das Problem auf: je weniger Leute sich mit Basiswissen auskennen, desto höher die Wahrscheinlichkeit, dass dieses Basiswissen einmal verloren geht. Ja, natürlich kann man alles dokumentieren und archvieren. Trotzdem braucht es ja weiterhin Leute die dieses Wissen dann auch anwenden können.

Blow erklärt das sehr gut anhand der Situation in der Spielewelt (die Konferenz auf der er spricht ist eine Spielekonferenz) – genauer gesagt in der Welt der Indygames – in der es aktuell mehr oder weniger nur noch zwei führende Technologien gibt: Unity und Unreal. Keiner der entsprechenden Entwickler weiß, wie man selbst eine 3D Engine baut noch wie man absolut Low-Level einen Pixel auf den Bildschirm zeichen kann. Ich habe dafür mal von dem tollen Begriff des “Glue-Developers” gelesen: also ein Entwickler, der “nur noch” Libraries/Frameworks “zusammenklebt” und damit komplexe Applikationen baut. Das ist an sich etwas tolles, weil es effizient und wahrscheinlich sehr schnell ist. Aber was passiert, wenn es zu einem Fehler in einer darunter liegenden Library kommt?

Wie repariert man diesen Fehler bzw. wie findet man ihn überhaupt noch. NodeJS bzw. NPM ist ein gutes Beispiel wie absurd diese Abstraktion von Wissen werden kann, da dort selbst einfachste Funktionen in externe Libraries ausgelagert werden. Mit fatalen Konsequenzen.

Mich hat der Vortrag auf jeden Fall inspieriert, mal wieder einen Blick auf Basics zu werfen und lieber grundlegende Dinge wie Assembler/C Programmierung anzuschauen und mein Grundwissen da etwas auszubauen statt dem nächsten neuen Tech-Trend hinterherzueifern.

Erste Benchmarks für Apples M1 Prozessor sind da

Da hat Apple mit dem M1 was ziemlich heftiges rausgehauen. Die ersten Benchmarks zeigen, dass das Macbook Air (passiv gekühltes Einsteigergerät) mit dem neuen M1 Chip das am besten ausgestattete Macbook Pro 16″ in nahezu allen Kategorien schlägt. Man kann sich ausmahlen was dann die neuen Macbook Pros die hoffentlich im Frühjahr kommen leisten werden 😱

Quelle: https://browser.geekbench.com/v5/cpu/compare/4652635?baseline=4648107

curl output anpassen

Wenn du den Output von Curl anpassen willst, um z.B. nur zu schauen, welcher http Code zurückgeben wird oder nur schauen möchtest, wie lange das laden der Seite gedauert hat, dann kannst du mit der Option “-w” genau das tun:

curl -s -w "%{http_code} - %{time_total}\n" -o /dev/null [URL]

In diesem Beispiel war der http Status 200 und die Seite hat 0.08s zum Laden benötigt.

docker-compose Setup ist von anderen Containern nicht erreichbar

Folgende Situation:

Du hast auf einem Docker Host diverse Container laufen, die teilweise auch untereinander kommunizieren. Nun möchtest du per docker compose ein paar weitere Container hinzufügen. Und dann bemerkst du, dass diese Container von den “alten” Containern (z.B. einem nginx Proxy) nicht erreichbar sind, weil docker-compose diese automatisch in ein eigenes Network packt.

Um das Problem zu lösen, ist die einfachste (wenn auch nicht schönste) Variante, dass die docker-compose container auch im “default” Netzwerk (“bridge”) teilnehmen. Dazu muss man einfach für jeden Container/Service der Eintrag

network_mode: bridge

Damit die Container aus der docker-compose Datei sich auch noch untereinander sehen können, kann man sie ganz klassisch per

link:

Annotation zusammenführen.