Timecode aus Video über RS232 ableiten

OP #7095985
Lesenswert?

Hallo zusammen!

Mein erster Beitrag auf Mikrokontroller.net, ich bin sehr gespannt ob 
mir wer weiterhelfen kann: Ich möchte gerne ein Video abspielen, das mir 
zu den Zeitpunkten x und y ein Ausgangssignal (jedweder Art) zur 
Verfügung stellt, das ich zum triggern einer Aktorik (per Arduino) 
weiterverarbeiten kann.

Der erste Versuch, dafür die Tonspur zu nutzen war nur mit mäßigem 
Erfolg verbunden. Es ist zu hörbar und zu unsicher in der Erkennung. Der 
zweite Ansatz ist nun, die Abspielzeit des Videos zu nutzen. Nach etwas 
Recherche ist mir dabei der Timecode aufgefallen, der sich sogar 
framegenau nutzen lässt.

Kennt ihr eine Möglichkeit, diesen Timecode "live" bei der 
Videowiedergabe auf der RS232 o.ä. darzustellen? Zielhardware kann ein 
Mini-PC mit Windows oder auch ein Raspberry sein.

Vielen Dank schon mal für mögliche Antworten und Hilfe! :)
Andi
#7096055
Lesenswert?

Andi M. schrieb:
> Kennt ihr eine Möglichkeit, diesen Timecode "live" bei der
> Videowiedergabe auf der RS232 o.ä. darzustellen?

Willst du da den Timecode jedes Frames übertragen, nur um dann ein- oder 
zweimal im ganzen Video drauf zu reagieren?

Ich hätte mir da wohl was mit avisynth auf dem Abspielcomputer 
gebastelt, das dann an den gewünschten Stellen eine Aktion triggert.

Oliver
#7096107
Lesenswert?

Ergänzung zu ffplay

Theoretisch könnte man Steuercodes als Untertitel in das Video einbauen.
Ggf kann man die Steuerbefehle des Arduinos direkt integrieren und spart 
den Umweg über Timecodes.

Untertitel einbauen ist einfach.
Weiss allerdings nicht ob ffplay auch Untertitel auf die Console 
ausgeben kann.
Gast #7096303
Lesenswert?

Andi M. schrieb:

> Ich möchte gerne ein Video abspielen, das mir
> zu den Zeitpunkten x und y ein Ausgangssignal (jedweder Art) zur
> Verfügung stellt, das ich zum triggern einer Aktorik (per Arduino)
> weiterverarbeiten kann.

Womit genau willst du das Video abspielen?

> Der erste Versuch, dafür die Tonspur zu nutzen war nur mit mäßigem
> Erfolg verbunden. Es ist zu hörbar und zu unsicher in der Erkennung.

Dann hast du was falsch gemacht. DTMF z.B. kann leise bis knapp über die 
Hörschwelle machen und ist trotzdem mit recht höher Sicherheit 
erkennbar. Natürlich muss dafür der Empfänger ziemlich aufwendig sein.

> Der
> zweite Ansatz ist nun, die Abspielzeit des Videos zu nutzen. Nach etwas
> Recherche ist mir dabei der Timecode aufgefallen, der sich sogar
> framegenau nutzen lässt.

Man könnte als auch einfach die Frames zählen, anstatt aufwendig den 
Timecode aus dem Video zu extrahieren, meinst du nicht?

Wie auch immer: der entscheidende Punkt ist, womit genau abgespielt 
werden soll. Daraus ergibt sich, an welche Infos man herankommen kann. 
Und daraus ergibt sich, was man wie in das Video als Schaltbefehl packt 
(oder ob man einfach eine sowieso bestehende Eigenschaft des Videos 
benutzt).
OP #7096746
Lesenswert?

Erstmal vielen Dank für die Antworten, das geht genau in die Richtung 
die mir hilft! :) Das Video kann prinzipiell mit allem abgespielt 
werden, ich muss es nur per HDMI vollformatig herrausschicken können.

Mit Processing: Klingt sehr gut! Der Usecase wäre: Taste drücken, Video 
öffnet sich vollformatig auf dem HDMI Ausgang und nach genau x Sekunden 
Spielzeit sendet Processing dann den Trigger auf der COM raus. Wäre 
sowas möglich?

Mit ffplay und Untertitel: Klingt ebenfalls gut! Ich komm nur mit der 
Doku nicht dahinter, ob der Untertitel auf der Console ausgegeben werden 
kann.. Seh ichs nur nicht, oder geht das leider nicht? :/

Viele Grüße,
Andi
#7096756
Lesenswert?

Moin,

Frueher, als noch mehr Lametta war, war sowas prinzipiell einfacher. 
Heute, wo weniger Lametta aber dafuer viel mehr Audio/Videokompression 
ist, ist's etwas komplexer geworden.
So klassische Sachen, wie SMPTE-VITC oder -LTC werden ueblicherweise 
nicht durch gaengige codecs mitkomprimiert, d.h. die sind dann einfach 
mal weg und der Decoder kann sie nicht mehr wieder dazuzaubern. Dafuer 
kann man in den ueblichen Containerformaten aber auch Daten ausser 
Audio/Video uebertragen, also z.b. auch Zeitinformationen.
Wird also entscheidend sein, was du genau an AV-Material vorliegen hast 
und wie du das genau abspielen willst.

Gruss
WK
#7096816
Lesenswert?

Andi M. schrieb:
> Mit Processing: Klingt sehr gut! Der Usecase wäre: Taste drücken, Video
> öffnet sich vollformatig auf dem HDMI Ausgang und nach genau x Sekunden
> Spielzeit sendet Processing dann den Trigger auf der COM raus. Wäre
> sowas möglich?

Ja. Genau für Sowas ist Processing gemacht.

Mach ein "Serial"-Objekt auf, mit port.available()/port.read() liest du 
von deinen COM, wenn das "Start"-Signal kommt: "movie.play()"
(Falls der Start-Tastendruck auch über die Serielle kommt, ansonsten 
kannst du natürlich auch auf das Computer-Keyboard zugreifen.)

https://processing.org/reference/libraries/serial/index.html

Die "movie.time()"-Methode gibt den aktuell abgespielten Zeitpunkt 
zurück, in Sekunden als Float. Beim Überschreiten des gewünschten 
Zeitpunkts schickst du mit port.write("X") deinen Trigger.

Wenn das ganze sowieso auf einem Raspi läuft: Du kannst in Processing 
auch direkt auf dessen GPIOs zugreifen.

https://processing.org/reference/libraries/io/GPIO.html

Wer Ähnlichkeiten zur Arduino-API entdeckt: Ja, da ist wohl ein Projekt 
vom anderen inspiriert worden.
Gast #7114739
Lesenswert?

Andi M. schrieb:
> Der erste Versuch, dafür die Tonspur zu nutzen war nur mit mäßigem
> Erfolg verbunden.

Dann könntest du das noch verfeinern.
Schon vor 40 Jahren hat das funktioniert, im den/die Projektor(en) bei 
automatischen Live-Dia Shows zu steuern.
MVF wäre eine Möglichkeit, um den Erfolg zu steigern.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren