Autostart einer Videoaufnahme & Umwandlung

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
gragtoni435
User
Beiträge: 10
Registriert: Donnerstag 9. Januar 2020, 10:00

Donnerstag 9. Januar 2020, 16:12

Hallo Zusammen,

folgende Frage an die Experten hier, da ich mit Python leider keine Erfahrung habe:

Ich habe eine Raspberry Pi 4 und die dazugehörige RaspiCam V2.1 und möchte damit beim Start direkt eine automatische Videoaufnahme für eine bestimmte Zeit starten. Das hab ich mit einer record.desktop Datei im Autostart-Menü geschafft. Dazu noch ein Shell-Script, damit die Video-Datei immer mit dem Datum und der Uhrzeit benannt wird, damit sich neue Videodateien nicht ständig überschreiben.

Problem ist nun, dass die Video-Datei im .h264 Format aufgenommen wird und bei dieser Datei kein Time-Code vorhanden ist. Um eine Untertitel Datei einzufügen benötige ich aber einen Time-Code. :roll:

Ist es möglich mit einen Programm in Python die Video-Datei direkt automatisch in bspw. .mp4 umzuwandeln?
Oder bei Python direkt angeben, dass die Video-Datei in einem anderen Format als .h264 erstellt werden soll?
Oder wäre es sinnvoller den kompletten Autostart der Aufnahme (und falls benötigt, die anschließender Umwandlung) alles in Python zu programmieren?

Bestenfalls soll dann die Untertitel-Datei noch automatisch ins Video eingebunden werden. Aber das wäre dann erst Thema wenn ich es überhaupt soweit geschafft habe.

Bevor ich mich da nämlich reinfuchse hätte ich gern eine Abwägung von Leuten mit Ahnung ob das überhaupt möglich ist und ob ich dann gegebenenfalls auch Hilfe bekomme.

Vielen Dank für jegliche Hilfe & beste Grüße!
Jankie
User
Beiträge: 374
Registriert: Mittwoch 26. September 2018, 14:06

Donnerstag 9. Januar 2020, 16:33

Ich kenne mich leider nicht damit aus, aber ich habe gesehen es gibt eine Möglichkeit dieses .h264 Format mithilfe von GPAC mit einer Zeile im Terminal in .mp4 umzuwandeln. Du könntest dann z.B. ein Python Script erstellen, welches alle .h264 Dateien sucht und in eine Liste packt. Diese Liste wird dann durchgegangen und für jede .h264 Datei in der Liste kannst du mit subprocess das Terminal öffnen mit dem richtigen Befehl und Parameter.

Beispiel (nur zur Veranschaulichung):

Code: Alles auswählen

import os
FILES = ["09-01-2020.h264", "08-01-2020.h264", "07-01-2020.h264"]


for file in FILES:
    filename = os.path.splitext(file)[0]
    subprocess.run(["MP4Box", "-add", file , f"{filename}.mp4"])
__deets__
User
Beiträge: 8284
Registriert: Mittwoch 14. Oktober 2015, 14:29

Donnerstag 9. Januar 2020, 17:12

Für mich klingt das nach einem XY-Problem. Vielleicht kannst du mal beschreiben, worum es dabei insgesamt geht.
gragtoni435
User
Beiträge: 10
Registriert: Donnerstag 9. Januar 2020, 10:00

Donnerstag 9. Januar 2020, 20:15

Ok, das ganze ist ein kleines Projekt für mich als Werksstudent in der Firma.
Die Firma hat ein kleines Hochregallager. Hier muss jedes Jahr der Stahlbau kontrolliert werden.
Und das würde man gerne mit einer Videoaufzeichnung durchführen, auch als Dokumentation hinterher.

Nun hab ich 2 Raspberry Pis bekommen, die in einem Behälter montiert werden sollen. Eine Kamera nimmt die rechte Seite und eine die linke Seite des Stahlbaus auf.
Nun soll der Behälter einfach auf das Lastaufnahmemittel gestellt werden und von dort aus versorgt werden.
Sobald die Versorgung angeschlossen ist, soll die Aufnahme automatisch starten.
Zum genauen Ausrichten sind auch 2 Displays (jeweils einen pro Pi) in dem Behälter eingebaut.

Sobald alles stimmt, fährt das Regalbediengerät automatisch in einer langsamen Geschwindigkeit den kompletten Stahlbau ab.
Anschließend soll eine Untertitel-Datei mit den Positionsdaten, welche wir aus der Steuerung des Geräts haben, unter das Video gelegt werden.

Nun habe ich es mit Raspivid versucht, aber hier wird eben eine Video-Datei erstellt, die keinen Time-Code hat. Daher nicht mehr der Untertitel-Datei verknüpfbar.

Beste Grüße!
__deets__
User
Beiträge: 8284
Registriert: Mittwoch 14. Oktober 2015, 14:29

Donnerstag 9. Januar 2020, 20:41

Selbst wenn du da time codes bekommst - das synchron zu kriegen wird schwer. Weder Start noch Geschwindigkeit sind abgeglichen. Kannst du die positionsdaten sofort kriegen? Dann würde ich die zb per gstreamer gleich mit einblenden.

Und sonst hilft das hier: https://www.raspberrypi.org/forums/view ... hp?t=50553
gragtoni435
User
Beiträge: 10
Registriert: Donnerstag 9. Januar 2020, 10:00

Donnerstag 9. Januar 2020, 22:17

Geplant ist, sobald die Vorrichtung ausgerichtet ist und das Programm zum Durchfahren startet, dass dann eine Datei mit folgendem Aufbau erstellt wird.

Code: Alles auswählen

1
00:00:05,500 --> 00:00:10,400
Untertitel her!!
2
00:00:12,500 --> 00:00:20,300
Jawohl!
3
00:00:25,500 --> 00:01:20,300
Top, das funktioniert!
Die Positionsdaten müssen auch nicht auf die Millisekunde genau richtig angezeigt werden. Es reicht grob zu wissen, wenn man das Video stoppt, an welcher X und Y-Koordinate man sich befindet um bei Problemen nochmal nachschauen zu könnnen.

Es gibt eventuell auch die Möglichkeit mit dem Programm Node-Red und einer Verbindung zur Steuerung die Positionsdaten dauerhaft aus der Steuerung abzufragen.
Dafür müsste ich mich aber auch da erstmal reinfuchsen ob und wie das möglich ist.
Ich hätte es mir nur einfacher vorgestellt, die Untertitel Datei einfach mit der Videodatei zu verknüpfen, aber dafür fehlt wie gesagt der Time-Code.
__deets__
User
Beiträge: 8284
Registriert: Mittwoch 14. Oktober 2015, 14:29

Freitag 10. Januar 2020, 06:56

Der link von mir könnte das Timecode Problem lösen. Schon probiert?
Jankie
User
Beiträge: 374
Registriert: Mittwoch 26. September 2018, 14:06

Freitag 10. Januar 2020, 07:09

Bei dem Code unten ist ein kleiner Fehler drin, dort steht MP$Box, da müsste aber MP4Box hin.
gragtoni435
User
Beiträge: 10
Registriert: Donnerstag 9. Januar 2020, 10:00

Dienstag 14. Januar 2020, 10:13

__deets__ hat geschrieben:
Freitag 10. Januar 2020, 06:56
Der link von mir könnte das Timecode Problem lösen. Schon probiert?
Leider noch nicht. Es ist momentan Prüfungszeit, da hab ich wenig Zeit dafür. Ich versuche es aber die nächsten Tage zu versuchen.
Vielen Dank schonmal.

Eventuell ist auch ein direktes Abfragen der Untertitel möglich. Wie bindet man denn diese direkt rein? Das wäre natürlich die Optimallösung. Dazu muss ich aber erst eine stabile Abfrage der Positionsdaten aus der S7 Steuerung per Node-Red hinbekommen.

Beste Grüße
__deets__
User
Beiträge: 8284
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dienstag 14. Januar 2020, 13:47

Zb mit der opencv kann man die Kamera benutzen & Text in Bilder einfügen.
Benutzeravatar
DeaD_EyE
User
Beiträge: 435
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Mittwoch 15. Januar 2020, 11:29

Alternativ könnte ein externes Unternehmen die Steuerung erweitern.
Selber ohne Ahnung zu basteln, kann einem den Kopf kosten.

Jedenfalls könnte die Schrittkette dann alle Positionen nacheinander abfahren und jedes mal ein digitales Signal ausgeben (positive Flanke), dass dann die Kamera veranlasst ein Foto zu machen.
Wenn es Sequentiell gemacht wird, braucht man noch nicht einmal die Information wo das Foto gemacht worden ist, sondern man braucht einfach nur den Ablauf der Testfahrt zu kennen.
Hat den Vorteil, dass du keine Videos auswerten musst und du hast Fotos für jede Strebe vorliegen.

Wenn es eine S5 ist, würde ich aber definitiv die Finger von lassen :-D
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
gragtoni435
User
Beiträge: 10
Registriert: Donnerstag 9. Januar 2020, 10:00

Donnerstag 23. Januar 2020, 15:42

DeaD_EyE hat geschrieben:
Mittwoch 15. Januar 2020, 11:29
Alternativ könnte ein externes Unternehmen die Steuerung erweitern.
Selber ohne Ahnung zu basteln, kann einem den Kopf kosten.

Jedenfalls könnte die Schrittkette dann alle Positionen nacheinander abfahren und jedes mal ein digitales Signal ausgeben (positive Flanke), dass dann die Kamera veranlasst ein Foto zu machen.
Wenn es Sequentiell gemacht wird, braucht man noch nicht einmal die Information wo das Foto gemacht worden ist, sondern man braucht einfach nur den Ablauf der Testfahrt zu kennen.
Hat den Vorteil, dass du keine Videos auswerten musst und du hast Fotos für jede Strebe vorliegen.

Wenn es eine S5 ist, würde ich aber definitiv die Finger von lassen :-D
Das ganze wurde sogar mal ausgeschrieben. Dabei war auch eine automatische Erkennung für Auffälligkeiten in die Beschreibung mit dabei.
Die Angebote der Firmen waren dann jedenfalls viel zu hoch. Somit wurde es eben als "abgespeckte" Version (Video mit Positionsdaten) an uns weitergegeben. Glaube die sind selbst gespannt, was da bei uns am Ende rauskommt :wink:
Den Ablauf, wie das Gerät durch den Stahlbau fährt kann man sich sowieso dann aus der Steuerung ziehen. Aber dann müsste man eben beim Video mitzählen an der wievielten Position man gerade ist. Das stell ich mir auch ziemlich nervig vor :lol:

Die Steuerung ist eine S7 (317 von Siemens)
gragtoni435
User
Beiträge: 10
Registriert: Donnerstag 9. Januar 2020, 10:00

Freitag 7. Februar 2020, 16:01

So, jetzt kann ich das Thema endlich mal ernsthaft angehen. Prüfungen sind vorbei.
Bei weiterem Suchen im Internet habe ich das hier gefunden:

https://www.meccanismocomplesso.org/en/ ... and-video/

Das funktioniert auch ziemlich einfach, aber ist es möglich den Text hier zu konfigurieren? Oder ist in der Variante nur der feste Text möglich?
Ansonsten versuche ich mich mal an openCV um einen Text ins Video zu kriegen.

Beste Grüße & Vielen Dank für jegliche Hilfe
__deets__
User
Beiträge: 8284
Registriert: Mittwoch 14. Oktober 2015, 14:29

Freitag 7. Februar 2020, 16:13

Das steht doch da:

Code: Alles auswählen

 camera.annotate_text = "I am what I am"
Und spaeter taucht das auf dem Bild auf. Was ausser einem konfigurierbaren Text sollte das denn sein?
gragtoni435
User
Beiträge: 10
Registriert: Donnerstag 9. Januar 2020, 10:00

Sonntag 9. Februar 2020, 16:17

__deets__ hat geschrieben:
Freitag 7. Februar 2020, 16:13
Das steht doch da:

Code: Alles auswählen

 camera.annotate_text = "I am what I am"
Und spaeter taucht das auf dem Bild auf. Was ausser einem konfigurierbaren Text sollte das denn sein?
Ja das ist mir schon klar :)
Aber könnte ich diese Zeile so verändern, dass eben die Positionsdaten, die ständig immer neu mit Node-Red aus der CPU ausgelesen werden, dort eingefügt werden?
Antworten